{"abi":[{"type":"constructor","inputs":[{"name":"_bridge","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_decimals","type":"uint8","internalType":"uint8"}],"stateMutability":"nonpayable"},{"type":"function","name":"BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"REMOTE_TOKEN","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"bridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"decreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"l1Token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"l2Bridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"remoteToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60e06040523480156200001157600080fd5b506040516200178a3803806200178a833981016040819052620000349162000163565b828260036200004483826200029e565b5060046200005382826200029e565b5050506001600160a01b039384166080529390921660a052505060ff1660c0526200036a565b80516001600160a01b03811681146200009157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000be57600080fd5b81516001600160401b0380821115620000db57620000db62000096565b604051601f8301601f19908116603f0116810190828211818310171562000106576200010662000096565b816040528381526020925086838588010111156200012357600080fd5b600091505b8382101562000147578582018301518183018401529082019062000128565b83821115620001595760008385830101525b9695505050505050565b600080600080600060a086880312156200017c57600080fd5b620001878662000079565b9450620001976020870162000079565b60408701519094506001600160401b0380821115620001b557600080fd5b620001c389838a01620000ac565b94506060880151915080821115620001da57600080fd5b50620001e988828901620000ac565b925050608086015160ff811681146200020157600080fd5b809150509295509295909350565b600181811c908216806200022457607f821691505b6020821081036200024557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200029957600081815260208120601f850160051c81016020861015620002745750805b601f850160051c820191505b81811015620002955782815560010162000280565b5050505b505050565b81516001600160401b03811115620002ba57620002ba62000096565b620002d281620002cb84546200020f565b846200024b565b602080601f8311600181146200030a5760008415620002f15750858301515b600019600386901b1c1916600185901b17855562000295565b600085815260208120601f198616915b828110156200033b578886015182559484019460019091019084016200031a565b50858210156200035a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c0516113d4620003b6600039600061024401526000818161034b015281816103e001528181610625015261075c0152600081816101a9015261037101526113d46000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063ae1f6aaf1161008c578063dd62ed3e11610066578063dd62ed3e14610395578063e78cea9214610349578063ee9a31a2146103db57600080fd5b8063ae1f6aaf14610349578063c01e1bd61461036f578063d6c0b2c41461036f57600080fd5b80639dc29fac116100bd5780639dc29fac14610310578063a457c2d714610323578063a9059cbb1461033657600080fd5b806370a08231146102d257806395d89b411461030857600080fd5b806323b872dd1161012f5780633950935111610114578063395093511461026e57806340c10f191461028157806354fd4d501461029657600080fd5b806323b872dd1461022a578063313ce5671461023d57600080fd5b806306fdde031161016057806306fdde03146101f0578063095ea7b31461020557806318160ddd1461021857600080fd5b806301ffc9a71461017c578063033964be146101a4575b600080fd5b61018f61018a36600461117d565b610402565b60405190151581526020015b60405180910390f35b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f86104f3565b60405161019b91906111c6565b61018f610213366004611262565b610585565b6002545b60405190815260200161019b565b61018f61023836600461128c565b61059d565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161019b565b61018f61027c366004611262565b6105c1565b61029461028f366004611262565b61060d565b005b6101f86040518060400160405280600581526020017f312e332e3000000000000000000000000000000000000000000000000000000081525081565b61021c6102e03660046112c8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101f8610735565b61029461031e366004611262565b610744565b61018f610331366004611262565b61085b565b61018f610344366004611262565b61092c565b7f00000000000000000000000000000000000000000000000000000000000000006101cb565b7f00000000000000000000000000000000000000000000000000000000000000006101cb565b61021c6103a33660046112e3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007fec4fc8e3000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000085168314806104bb57507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b806104ea57507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461050290611316565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90611316565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b5050505050905090565b60003361059381858561093a565b5060019392505050565b6000336105ab858285610aee565b6105b6858585610bc5565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906105939082908690610608908790611398565b61093a565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084015b60405180910390fd5b6106e18282610e78565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161072991815260200190565b60405180910390a25050565b60606004805461050290611316565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106ce565b6108138282610f98565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161072991815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ce565b6105b6828686840361093a565b600033610593818585610bc5565b73ffffffffffffffffffffffffffffffffffffffff83166109dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216610a7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bbf5781811015610bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ce565b610bbf848484840361093a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610e05908490611398565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e6b91815260200190565b60405180910390a3610bbf565b73ffffffffffffffffffffffffffffffffffffffff8216610ef5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ce565b8060026000828254610f079190611398565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610f41908490611398565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156110f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040812083830390556002805484929061112d9084906113b0565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ae1565b60006020828403121561118f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146111bf57600080fd5b9392505050565b600060208083528351808285015260005b818110156111f3578581018301518582016040015282016111d7565b81811115611205576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125d57600080fd5b919050565b6000806040838503121561127557600080fd5b61127e83611239565b946020939093013593505050565b6000806000606084860312156112a157600080fd5b6112aa84611239565b92506112b860208501611239565b9150604084013590509250925092565b6000602082840312156112da57600080fd5b6111bf82611239565b600080604083850312156112f657600080fd5b6112ff83611239565b915061130d60208401611239565b90509250929050565b600181811c9082168061132a57607f821691505b602082108103611363577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156113ab576113ab611369565b500190565b6000828210156113c2576113c2611369565b50039056fea164736f6c634300080f000a","sourceMap":"833:4510:229:-:0;;;2268:292;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2440:5;2447:7;2044:5:45;:13;2440:5:229;2044::45;:13;:::i;:::-;-1:-1:-1;2067:7:45;:17;2077:7;2067;:17;:::i;:::-;-1:-1:-1;;;;;;;;2470:27:229;;::::1;;::::0;2507:16;;;::::1;;::::0;-1:-1:-1;;2533:20:229::1;;;::::0;833:4510;;14:177:357;93:13;;-1:-1:-1;;;;;135:31:357;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:885;382:5;435:3;428:4;420:6;416:17;412:27;402:55;;453:1;450;443:12;402:55;476:13;;-1:-1:-1;;;;;538:10:357;;;535:36;;;551:18;;:::i;:::-;626:2;620:9;594:2;680:13;;-1:-1:-1;;676:22:357;;;700:2;672:31;668:40;656:53;;;724:18;;;744:22;;;721:46;718:72;;;770:18;;:::i;:::-;810:10;806:2;799:22;845:2;837:6;830:18;867:4;857:14;;912:3;907:2;902;894:6;890:15;886:24;883:33;880:53;;;929:1;926;919:12;880:53;951:1;942:10;;961:133;975:2;972:1;969:9;961:133;;;1063:14;;;1059:23;;1053:30;1032:14;;;1028:23;;1021:63;986:10;;;;961:133;;;1112:2;1109:1;1106:9;1103:80;;;1171:1;1166:2;1161;1153:6;1149:15;1145:24;1138:35;1103:80;1201:6;328:885;-1:-1:-1;;;;;;328:885:357:o;1218:884::-;1342:6;1350;1358;1366;1374;1427:3;1415:9;1406:7;1402:23;1398:33;1395:53;;;1444:1;1441;1434:12;1395:53;1467:40;1497:9;1467:40;:::i;:::-;1457:50;;1526:49;1571:2;1560:9;1556:18;1526:49;:::i;:::-;1619:2;1604:18;;1598:25;1516:59;;-1:-1:-1;;;;;;1672:14:357;;;1669:34;;;1699:1;1696;1689:12;1669:34;1722:61;1775:7;1766:6;1755:9;1751:22;1722:61;:::i;:::-;1712:71;;1829:2;1818:9;1814:18;1808:25;1792:41;;1858:2;1848:8;1845:16;1842:36;;;1874:1;1871;1864:12;1842:36;;1897:63;1952:7;1941:8;1930:9;1926:24;1897:63;:::i;:::-;1887:73;;;2003:3;1992:9;1988:19;1982:26;2048:4;2041:5;2037:16;2030:5;2027:27;2017:55;;2068:1;2065;2058:12;2017:55;2091:5;2081:15;;;1218:884;;;;;;;;:::o;2107:380::-;2186:1;2182:12;;;;2229;;;2250:61;;2304:4;2296:6;2292:17;2282:27;;2250:61;2357:2;2349:6;2346:14;2326:18;2323:38;2320:161;;2403:10;2398:3;2394:20;2391:1;2384:31;2438:4;2435:1;2428:15;2466:4;2463:1;2456:15;2320:161;;2107:380;;;:::o;2618:545::-;2720:2;2715:3;2712:11;2709:448;;;2756:1;2781:5;2777:2;2770:17;2826:4;2822:2;2812:19;2896:2;2884:10;2880:19;2877:1;2873:27;2867:4;2863:38;2932:4;2920:10;2917:20;2914:47;;;-1:-1:-1;2955:4:357;2914:47;3010:2;3005:3;3001:12;2998:1;2994:20;2988:4;2984:31;2974:41;;3065:82;3083:2;3076:5;3073:13;3065:82;;;3128:17;;;3109:1;3098:13;3065:82;;;3069:3;;;2709:448;2618:545;;;:::o;3339:1352::-;3459:10;;-1:-1:-1;;;;;3481:30:357;;3478:56;;;3514:18;;:::i;:::-;3543:97;3633:6;3593:38;3625:4;3619:11;3593:38;:::i;:::-;3587:4;3543:97;:::i;:::-;3695:4;;3759:2;3748:14;;3776:1;3771:663;;;;4478:1;4495:6;4492:89;;;-1:-1:-1;4547:19:357;;;4541:26;4492:89;-1:-1:-1;;3296:1:357;3292:11;;;3288:24;3284:29;3274:40;3320:1;3316:11;;;3271:57;4594:81;;3741:944;;3771:663;2565:1;2558:14;;;2602:4;2589:18;;-1:-1:-1;;3807:20:357;;;3925:236;3939:7;3936:1;3933:14;3925:236;;;4028:19;;;4022:26;4007:42;;4120:27;;;;4088:1;4076:14;;;;3955:19;;3925:236;;;3929:3;4189:6;4180:7;4177:19;4174:201;;;4250:19;;;4244:26;-1:-1:-1;;4333:1:357;4329:14;;;4345:3;4325:24;4321:37;4317:42;4302:58;4287:74;;4174:201;-1:-1:-1;;;;;4421:1:357;4405:14;;;4401:22;4388:36;;-1:-1:-1;3339:1352:357:o;:::-;833:4510:229;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063ae1f6aaf1161008c578063dd62ed3e11610066578063dd62ed3e14610395578063e78cea9214610349578063ee9a31a2146103db57600080fd5b8063ae1f6aaf14610349578063c01e1bd61461036f578063d6c0b2c41461036f57600080fd5b80639dc29fac116100bd5780639dc29fac14610310578063a457c2d714610323578063a9059cbb1461033657600080fd5b806370a08231146102d257806395d89b411461030857600080fd5b806323b872dd1161012f5780633950935111610114578063395093511461026e57806340c10f191461028157806354fd4d501461029657600080fd5b806323b872dd1461022a578063313ce5671461023d57600080fd5b806306fdde031161016057806306fdde03146101f0578063095ea7b31461020557806318160ddd1461021857600080fd5b806301ffc9a71461017c578063033964be146101a4575b600080fd5b61018f61018a36600461117d565b610402565b60405190151581526020015b60405180910390f35b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019b565b6101f86104f3565b60405161019b91906111c6565b61018f610213366004611262565b610585565b6002545b60405190815260200161019b565b61018f61023836600461128c565b61059d565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161019b565b61018f61027c366004611262565b6105c1565b61029461028f366004611262565b61060d565b005b6101f86040518060400160405280600581526020017f312e332e3000000000000000000000000000000000000000000000000000000081525081565b61021c6102e03660046112c8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101f8610735565b61029461031e366004611262565b610744565b61018f610331366004611262565b61085b565b61018f610344366004611262565b61092c565b7f00000000000000000000000000000000000000000000000000000000000000006101cb565b7f00000000000000000000000000000000000000000000000000000000000000006101cb565b61021c6103a33660046112e3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101cb7f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007fec4fc8e3000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000085168314806104bb57507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b806104ea57507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461050290611316565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90611316565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b5050505050905090565b60003361059381858561093a565b5060019392505050565b6000336105ab858285610aee565b6105b6858585610bc5565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906105939082908690610608908790611398565b61093a565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084015b60405180910390fd5b6106e18282610e78565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161072991815260200190565b60405180910390a25050565b60606004805461050290611316565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106ce565b6108138282610f98565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161072991815260200190565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ce565b6105b6828686840361093a565b600033610593818585610bc5565b73ffffffffffffffffffffffffffffffffffffffff83166109dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216610a7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bbf5781811015610bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ce565b610bbf848484840361093a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610e05908490611398565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e6b91815260200190565b60405180910390a3610bbf565b73ffffffffffffffffffffffffffffffffffffffff8216610ef5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ce565b8060026000828254610f079190611398565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610f41908490611398565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661103b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156110f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040812083830390556002805484929061112d9084906113b0565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ae1565b60006020828403121561118f57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146111bf57600080fd5b9392505050565b600060208083528351808285015260005b818110156111f3578581018301518582016040015282016111d7565b81811115611205576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125d57600080fd5b919050565b6000806040838503121561127557600080fd5b61127e83611239565b946020939093013593505050565b6000806000606084860312156112a157600080fd5b6112aa84611239565b92506112b860208501611239565b9150604084013590509250925092565b6000602082840312156112da57600080fd5b6111bf82611239565b600080604083850312156112f657600080fd5b6112ff83611239565b915061130d60208401611239565b90509250929050565b600181811c9082168061132a57607f821691505b602082108103611363577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156113ab576113ab611369565b500190565b6000828210156113c2576113c2611369565b50039056fea164736f6c634300080f000a","sourceMap":"833:4510:229:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3616:519;;;;;;:::i;:::-;;:::i;:::-;;;516:14:357;;509:22;491:41;;479:2;464:18;3616:519:229;;;;;;;;1022:37;;;;;;;;719:42:357;707:55;;;689:74;;677:2;662:18;1022:37:229;543:226:357;2156:98:45;;;:::i;:::-;;;;;;;:::i;4433:197::-;;;;;;:::i;:::-;;:::i;3244:106::-;3331:12;;3244:106;;;2041:25:357;;;2029:2;2014:18;3244:106:45;1895:177:357;5192:286:45;;;;;;:::i;:::-;;:::i;5252:89:229:-;;;2582:4:357;5326:8:229;2570:17:357;2552:36;;2540:2;2525:18;5252:89:229;2410:184:357;5873:234:45;;;;;;:::i;:::-;;:::i;2739:254:229:-;;;;;;:::i;:::-;;:::i;:::-;;2009:40;;;;;;;;;;;;;;;;;;;;;3408:125:45;;;;;;:::i;:::-;3508:18;;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;3174:260:229:-;;;;;;:::i;:::-;;:::i;6594:427:45:-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;4434:80:229:-;4501:6;4434:80;;4248:85;4314:12;4248:85;;3976:149:45;;;;;;:::i;:::-;4091:18;;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149;1129:31:229;;;;;3616:519;3695:4;3727:25;3844:38;3997:40;4054:22;;;;;;:48;;-1:-1:-1;4080:22:229;;;;;;;;4054:48;:74;;;-1:-1:-1;4106:22:229;;;;;;;;4054:74;4047:81;3616:519;-1:-1:-1;;;;;3616:519:229:o;2156:98:45:-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:60;4570:32:45;719:10:60;4586:7:45;4595:6;4570:8;:32::i;:::-;-1:-1:-1;4619:4:45;;4433:197;-1:-1:-1;;;4433:197:45:o;5192:286::-;5319:4;719:10:60;5375:38:45;5391:4;719:10:60;5406:6:45;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:45;;5192:286;-1:-1:-1;;;;5192:286:45:o;5873:234::-;719:10:60;5961:4:45;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5961:4;;719:10:60;6015:64:45;;719:10:60;;4091:27:45;;6040:38;;6068:10;;6040:38;:::i;:::-;6015:8;:64::i;2739:254:229:-;1845:10;:20;1859:6;1845:20;;1837:85;;;;;;;4021:2:357;1837:85:229;;;4003:21:357;4060:2;4040:18;;;4033:30;4099:34;4079:18;;;4072:62;4170:22;4150:18;;;4143:50;4210:19;;1837:85:229;;;;;;;;;2934:19:::1;2940:3;2945:7;2934:5;:19::i;:::-;2973:3;2968:18;;;2978:7;2968:18;;;;2041:25:357::0;;2029:2;2014:18;;1895:177;2968:18:229::1;;;;;;;;2739:254:::0;;:::o;2367:102:45:-;2423:13;2455:7;2448:14;;;;;:::i;3174:260:229:-;1845:10;:20;1859:6;1845:20;;1837:85;;;;;;;4021:2:357;1837:85:229;;;4003:21:357;4060:2;4040:18;;;4033:30;4099:34;4079:18;;;4072:62;4170:22;4150:18;;;4143:50;4210:19;;1837:85:229;3819:416:357;1837:85:229;3371:21:::1;3377:5;3384:7;3371:5;:21::i;:::-;3412:5;3407:20;;;3419:7;3407:20;;;;2041:25:357::0;;2029:2;2014:18;;1895:177;6594:427:45;719:10:60;6687:4:45;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6687:4;;719:10:60;6831:15:45;6811:16;:35;;6803:85;;;;;;;4442:2:357;6803:85:45;;;4424:21:357;4481:2;4461:18;;;4454:30;4520:34;4500:18;;;4493:62;4591:7;4571:18;;;4564:35;4616:19;;6803:85:45;4240:401:357;6803:85:45;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:60;3862:28:45;719:10:60;3879:2:45;3883:6;3862:9;:28::i;10110:370::-;10241:19;;;10233:68;;;;;;;4848:2:357;10233:68:45;;;4830:21:357;4887:2;4867:18;;;4860:30;4926:34;4906:18;;;4899:62;4997:6;4977:18;;;4970:34;5021:19;;10233:68:45;4646:400:357;10233:68:45;10319:21;;;10311:68;;;;;;;5253:2:357;10311:68:45;;;5235:21:357;5292:2;5272:18;;;5265:30;5331:34;5311:18;;;5304:62;5402:4;5382:18;;;5375:32;5424:19;;10311:68:45;5051:398:357;10311:68:45;10390:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10441:32;;2041:25:357;;;10441:32:45;;2014:18:357;10441:32:45;;;;;;;;10110:370;;;:::o;10761:441::-;4091:18;;;;10891:24;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;10977:17;10957:37;;10953:243;;11038:6;11018:16;:26;;11010:68;;;;;;;5656:2:357;11010:68:45;;;5638:21:357;5695:2;5675:18;;;5668:30;5734:31;5714:18;;;5707:59;5783:18;;11010:68:45;5454:353:357;11010:68:45;11120:51;11129:5;11136:7;11164:6;11145:16;:25;11120:8;:51::i;:::-;10881:321;10761:441;;;:::o;7475:651::-;7601:18;;;7593:68;;;;;;;6014:2:357;7593:68:45;;;5996:21:357;6053:2;6033:18;;;6026:30;6092:34;6072:18;;;6065:62;6163:7;6143:18;;;6136:35;6188:19;;7593:68:45;5812:401:357;7593:68:45;7679:16;;;7671:64;;;;;;;6420:2:357;7671:64:45;;;6402:21:357;6459:2;6439:18;;;6432:30;6498:34;6478:18;;;6471:62;6569:5;6549:18;;;6542:33;6592:19;;7671:64:45;6218:399:357;7671:64:45;7817:15;;;7795:19;7817:15;;;;;;;;;;;7850:21;;;;7842:72;;;;;;;6824:2:357;7842:72:45;;;6806:21:357;6863:2;6843:18;;;6836:30;6902:34;6882:18;;;6875:62;6973:8;6953:18;;;6946:36;6999:19;;7842:72:45;6622:402:357;7842:72:45;7948:15;;;;:9;:15;;;;;;;;;;;7966:20;;;7948:38;;8006:13;;;;;;;;:23;;7980:6;;7948:9;8006:23;;7980:6;;8006:23;:::i;:::-;;;;;;;;8060:2;8045:26;;8054:4;8045:26;;;8064:6;8045:26;;;;2041:25:357;;2029:2;2014:18;;1895:177;8045:26:45;;;;;;;;8082:37;9111:576;8402:389;8485:21;;;8477:65;;;;;;;7231:2:357;8477:65:45;;;7213:21:357;7270:2;7250:18;;;7243:30;7309:33;7289:18;;;7282:61;7360:18;;8477:65:45;7029:355:357;8477:65:45;8629:6;8613:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;8645:18:45;;;:9;:18;;;;;;;;;;:28;;8667:6;;8645:9;:28;;8667:6;;8645:28;:::i;:::-;;;;-1:-1:-1;;8688:37:45;;2041:25:357;;;8688:37:45;;;;8705:1;;8688:37;;2029:2:357;2014:18;8688:37:45;;;;;;;8402:389;;:::o;9111:576::-;9194:21;;;9186:67;;;;;;;7591:2:357;9186:67:45;;;7573:21:357;7630:2;7610:18;;;7603:30;7669:34;7649:18;;;7642:62;7740:3;7720:18;;;7713:31;7761:19;;9186:67:45;7389:397:357;9186:67:45;9349:18;;;9324:22;9349:18;;;;;;;;;;;9385:24;;;;9377:71;;;;;;;7993:2:357;9377:71:45;;;7975:21:357;8032:2;8012:18;;;8005:30;8071:34;8051:18;;;8044:62;8142:4;8122:18;;;8115:32;8164:19;;9377:71:45;7791:398:357;9377:71:45;9482:18;;;:9;:18;;;;;;;;;;9503:23;;;9482:44;;9546:12;:22;;9520:6;;9482:9;9546:22;;9520:6;;9546:22;:::i;:::-;;;;-1:-1:-1;;9584:37:45;;2041:25:357;;;9610:1:45;;9584:37;;;;;;2029:2:357;2014:18;9584:37:45;1895:177:357;14:332;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:357:o;774:656::-;886:4;915:2;944;933:9;926:21;976:6;970:13;1019:6;1014:2;1003:9;999:18;992:34;1044:1;1054:140;1068:6;1065:1;1062:13;1054:140;;;1163:14;;;1159:23;;1153:30;1129:17;;;1148:2;1125:26;1118:66;1083:10;;1054:140;;;1212:6;1209:1;1206:13;1203:91;;;1282:1;1277:2;1268:6;1257:9;1253:22;1249:31;1242:42;1203:91;-1:-1:-1;1346:2:357;1334:15;1351:66;1330:88;1315:104;;;;1421:2;1311:113;;774:656;-1:-1:-1;;;774:656:357:o;1435:196::-;1503:20;;1563:42;1552:54;;1542:65;;1532:93;;1621:1;1618;1611:12;1532:93;1435:196;;;:::o;1636:254::-;1704:6;1712;1765:2;1753:9;1744:7;1740:23;1736:32;1733:52;;;1781:1;1778;1771:12;1733:52;1804:29;1823:9;1804:29;:::i;:::-;1794:39;1880:2;1865:18;;;;1852:32;;-1:-1:-1;;;1636:254:357:o;2077:328::-;2154:6;2162;2170;2223:2;2211:9;2202:7;2198:23;2194:32;2191:52;;;2239:1;2236;2229:12;2191:52;2262:29;2281:9;2262:29;:::i;:::-;2252:39;;2310:38;2344:2;2333:9;2329:18;2310:38;:::i;:::-;2300:48;;2395:2;2384:9;2380:18;2367:32;2357:42;;2077:328;;;;;:::o;2599:186::-;2658:6;2711:2;2699:9;2690:7;2686:23;2682:32;2679:52;;;2727:1;2724;2717:12;2679:52;2750:29;2769:9;2750:29;:::i;2790:260::-;2858:6;2866;2919:2;2907:9;2898:7;2894:23;2890:32;2887:52;;;2935:1;2932;2925:12;2887:52;2958:29;2977:9;2958:29;:::i;:::-;2948:39;;3006:38;3040:2;3029:9;3025:18;3006:38;:::i;:::-;2996:48;;2790:260;;;;;:::o;3055:437::-;3134:1;3130:12;;;;3177;;;3198:61;;3252:4;3244:6;3240:17;3230:27;;3198:61;3305:2;3297:6;3294:14;3274:18;3271:38;3268:218;;3342:77;3339:1;3332:88;3443:4;3440:1;3433:15;3471:4;3468:1;3461:15;3268:218;;3055:437;;;:::o;3497:184::-;3549:77;3546:1;3539:88;3646:4;3643:1;3636:15;3670:4;3667:1;3660:15;3686:128;3726:3;3757:1;3753:6;3750:1;3747:13;3744:39;;;3763:18;;:::i;:::-;-1:-1:-1;3799:9:357;;3686:128::o;8194:125::-;8234:4;8262:1;8259;8256:8;8253:34;;;8267:18;;:::i;:::-;-1:-1:-1;8304:9:357;;8194:125::o","linkReferences":{},"immutableReferences":{"109440":[{"start":425,"length":32},{"start":881,"length":32}],"109443":[{"start":843,"length":32},{"start":992,"length":32},{"start":1573,"length":32},{"start":1884,"length":32}],"109446":[{"start":580,"length":32}]}},"methodIdentifiers":{"BRIDGE()":"ee9a31a2","REMOTE_TOKEN()":"033964be","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","bridge()":"e78cea92","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","l1Token()":"c01e1bd6","l2Bridge()":"ae1f6aaf","mint(address,uint256)":"40c10f19","name()":"06fdde03","remoteToken()":"d6c0b2c4","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"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\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"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\":\"BRIDGE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REMOTE_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"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\":[{\"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\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"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\":\"l1Token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Bridge\",\"outputs\":[{\"internalType\":\"address\",\"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\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"remoteToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Burn(address,uint256)\":{\"params\":{\"account\":\"Address of the account tokens are being burned from.\",\"amount\":\"Amount of tokens burned.\"}},\"Mint(address,uint256)\":{\"params\":{\"account\":\"Address of the account tokens are being minted for.\",\"amount\":\"Amount of tokens minted.\"}}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"bridge()\":{\"custom:legacy\":\"@notice Legacy getter for BRIDGE.\"},\"burn(address,uint256)\":{\"params\":{\"_amount\":\"Amount of tokens to burn.\",\"_from\":\"Address to burn tokens from.\"}},\"constructor\":{\"params\":{\"_bridge\":\"Address of the L2 standard bridge.\",\"_name\":\"ERC20 name.\",\"_remoteToken\":\"Address of the corresponding L1 token.\",\"_symbol\":\"ERC20 symbol.\"}},\"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`). 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.\"},\"l1Token()\":{\"custom:legacy\":\"@notice Legacy getter for the remote token. Use REMOTE_TOKEN going forward.\"},\"l2Bridge()\":{\"custom:legacy\":\"@notice Legacy getter for the bridge. Use BRIDGE going forward.\"},\"mint(address,uint256)\":{\"params\":{\"_amount\":\"Amount of tokens to mint.\",\"_to\":\"Address to mint tokens to.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"remoteToken()\":{\"custom:legacy\":\"@notice Legacy getter for REMOTE_TOKEN.\"},\"supportsInterface(bytes4)\":{\"params\":{\"_interfaceId\":\"Interface ID to check.\"},\"returns\":{\"_0\":\"Whether or not the interface is supported by this contract.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` 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}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"stateVariables\":{\"version\":{\"custom:semver\":\"1.3.0\"}},\"title\":\"OptimismMintableERC20\",\"version\":1},\"userdoc\":{\"events\":{\"Burn(address,uint256)\":{\"notice\":\"Emitted whenever tokens are burned from an account.\"},\"Mint(address,uint256)\":{\"notice\":\"Emitted whenever tokens are minted for an account.\"}},\"kind\":\"user\",\"methods\":{\"BRIDGE()\":{\"notice\":\"Address of the StandardBridge on this network.\"},\"REMOTE_TOKEN()\":{\"notice\":\"Address of the corresponding version of this token on the remote chain.\"},\"burn(address,uint256)\":{\"notice\":\"Allows the StandardBridge on this network to burn tokens.\"},\"mint(address,uint256)\":{\"notice\":\"Allows the StandardBridge on this network to mint tokens.\"},\"supportsInterface(bytes4)\":{\"notice\":\"ERC165 interface check function.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed         to allow the StandardBridge contracts to mint and burn tokens. This makes it possible to         use an OptimismMintablERC20 as the L2 representation of an L1 token, or vice-versa.         Designed to be backwards compatible with the older StandardL2ERC20 token which was only         meant for use on L2.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/universal/OptimismMintableERC20.sol\":\"OptimismMintableERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/universal/IOptimismMintableERC20.sol\":{\"keccak256\":\"0x6f8133b39efcbcbd5088f195dfacf1bedc3146508429c3865443909af735a04c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc36971e2e120458769f050428d9d2b0504516660345020c2521ee46e6d8abf\",\"dweb:/ipfs/QmPbFusQkZgGKpU8Fv5JoqL4oVeJtM3yqnhRGLY9eZT5zZ\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]},\"src/universal/OptimismMintableERC20.sol\":{\"keccak256\":\"0x18721f41a831ec39d47002e73ecc2aa3e6624f8d1ab7b9f25b53348e8b0765df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2162fa7529a77b199a07f37fca26c778542f6c8805f0365f1ceef90c5cd3a3a7\",\"dweb:/ipfs/QmaMmHJS52Bp95AGnrjh1zV7fLLqV3uAbFzkVLziMnPJYa\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_bridge","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Burn","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BRIDGE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"REMOTE_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"l1Token","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"l2Bridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"remoteToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"pure","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"bridge()":{"custom:legacy":"@notice Legacy getter for BRIDGE."},"burn(address,uint256)":{"params":{"_amount":"Amount of tokens to burn.","_from":"Address to burn tokens from."}},"constructor":{"params":{"_bridge":"Address of the L2 standard bridge.","_name":"ERC20 name.","_remoteToken":"Address of the corresponding L1 token.","_symbol":"ERC20 symbol."}},"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`). 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."},"l1Token()":{"custom:legacy":"@notice Legacy getter for the remote token. Use REMOTE_TOKEN going forward."},"l2Bridge()":{"custom:legacy":"@notice Legacy getter for the bridge. Use BRIDGE going forward."},"mint(address,uint256)":{"params":{"_amount":"Amount of tokens to mint.","_to":"Address to mint tokens to."}},"name()":{"details":"Returns the name of the token."},"remoteToken()":{"custom:legacy":"@notice Legacy getter for REMOTE_TOKEN."},"supportsInterface(bytes4)":{"params":{"_interfaceId":"Interface ID to check."},"returns":{"_0":"Whether or not the interface is supported by this contract."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` 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}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{"BRIDGE()":{"notice":"Address of the StandardBridge on this network."},"REMOTE_TOKEN()":{"notice":"Address of the corresponding version of this token on the remote chain."},"burn(address,uint256)":{"notice":"Allows the StandardBridge on this network to burn tokens."},"mint(address,uint256)":{"notice":"Allows the StandardBridge on this network to mint tokens."},"supportsInterface(bytes4)":{"notice":"ERC165 interface check function."},"version()":{"notice":"Semantic version."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","ds-test/=lib/forge-std/lib/ds-test/src/","forge-std/=lib/forge-std/src/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/universal/OptimismMintableERC20.sol":"OptimismMintableERC20"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238","urls":["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0","dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"src/universal/IOptimismMintableERC20.sol":{"keccak256":"0x6f8133b39efcbcbd5088f195dfacf1bedc3146508429c3865443909af735a04c","urls":["bzz-raw://adc36971e2e120458769f050428d9d2b0504516660345020c2521ee46e6d8abf","dweb:/ipfs/QmPbFusQkZgGKpU8Fv5JoqL4oVeJtM3yqnhRGLY9eZT5zZ"],"license":"MIT"},"src/universal/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"},"src/universal/OptimismMintableERC20.sol":{"keccak256":"0x18721f41a831ec39d47002e73ecc2aa3e6624f8d1ab7b9f25b53348e8b0765df","urls":["bzz-raw://2162fa7529a77b199a07f37fca26c778542f6c8805f0365f1ceef90c5cd3a3a7","dweb:/ipfs/QmaMmHJS52Bp95AGnrjh1zV7fLLqV3uAbFzkVLziMnPJYa"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":49734,"contract":"src/universal/OptimismMintableERC20.sol:OptimismMintableERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":49740,"contract":"src/universal/OptimismMintableERC20.sol:OptimismMintableERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":49742,"contract":"src/universal/OptimismMintableERC20.sol:OptimismMintableERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":49744,"contract":"src/universal/OptimismMintableERC20.sol:OptimismMintableERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":49746,"contract":"src/universal/OptimismMintableERC20.sol:OptimismMintableERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"version":1,"kind":"user","methods":{"BRIDGE()":{"notice":"Address of the StandardBridge on this network."},"REMOTE_TOKEN()":{"notice":"Address of the corresponding version of this token on the remote chain."},"burn(address,uint256)":{"notice":"Allows the StandardBridge on this network to burn tokens."},"mint(address,uint256)":{"notice":"Allows the StandardBridge on this network to mint tokens."},"supportsInterface(bytes4)":{"notice":"ERC165 interface check function."},"version()":{"notice":"Semantic version."}},"events":{"Burn(address,uint256)":{"notice":"Emitted whenever tokens are burned from an account."},"Mint(address,uint256)":{"notice":"Emitted whenever tokens are minted for an account."}},"notice":"OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed         to allow the StandardBridge contracts to mint and burn tokens. This makes it possible to         use an OptimismMintablERC20 as the L2 representation of an L1 token, or vice-versa.         Designed to be backwards compatible with the older StandardL2ERC20 token which was only         meant for use on L2."},"devdoc":{"version":1,"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"bridge()":{},"burn(address,uint256)":{"params":{"_amount":"Amount of tokens to burn.","_from":"Address to burn tokens from."}},"constructor":{"params":{"_bridge":"Address of the L2 standard bridge.","_name":"ERC20 name.","_remoteToken":"Address of the corresponding L1 token.","_symbol":"ERC20 symbol."}},"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`). 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."},"l1Token()":{},"l2Bridge()":{},"mint(address,uint256)":{"params":{"_amount":"Amount of tokens to mint.","_to":"Address to mint tokens to."}},"name()":{"details":"Returns the name of the token."},"remoteToken()":{},"supportsInterface(bytes4)":{"params":{"_interfaceId":"Interface ID to check."},"returns":{"_0":"Whether or not the interface is supported by this contract."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` 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}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"events":{"Burn(address,uint256)":{"params":{"account":"Address of the account tokens are being burned from.","amount":"Amount of tokens burned."}},"Mint(address,uint256)":{"params":{"account":"Address of the account tokens are being minted for.","amount":"Amount of tokens minted."}}},"title":"OptimismMintableERC20"},"ast":{"absolutePath":"src/universal/OptimismMintableERC20.sol","id":109646,"exportedSymbols":{"ERC20":[50304],"IERC165":[54446],"ILegacyMintableERC20":[109333],"IOptimismMintableERC20":[109310],"ISemver":[109417],"OptimismMintableERC20":[109645]},"nodeType":"SourceUnit","src":"32:5312:229","nodes":[{"id":109419,"nodeType":"PragmaDirective","src":"32:23:229","nodes":[],"literals":["solidity","0.8",".15"]},{"id":109421,"nodeType":"ImportDirective","src":"57:70:229","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","nameLocation":"-1:-1:-1","scope":109646,"sourceUnit":50305,"symbolAliases":[{"foreign":{"id":109420,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50304,"src":"66:5:229","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":109423,"nodeType":"ImportDirective","src":"128:82:229","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","nameLocation":"-1:-1:-1","scope":109646,"sourceUnit":54447,"symbolAliases":[{"foreign":{"id":109422,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54446,"src":"137:7:229","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":109426,"nodeType":"ImportDirective","src":"211:104:229","nodes":[],"absolutePath":"src/universal/IOptimismMintableERC20.sol","file":"src/universal/IOptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":109646,"sourceUnit":109334,"symbolAliases":[{"foreign":{"id":109424,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109333,"src":"220:20:229","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":109425,"name":"IOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109310,"src":"242:22:229","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":109428,"nodeType":"ImportDirective","src":"316:52:229","nodes":[],"absolutePath":"src/universal/ISemver.sol","file":"src/universal/ISemver.sol","nameLocation":"-1:-1:-1","scope":109646,"sourceUnit":109418,"symbolAliases":[{"foreign":{"id":109427,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109417,"src":"325:7:229","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":109645,"nodeType":"ContractDefinition","src":"833:4510:229","nodes":[{"id":109440,"nodeType":"VariableDeclaration","src":"1022:37:229","nodes":[],"constant":false,"documentation":{"id":109438,"nodeType":"StructuredDocumentation","src":"934:83:229","text":"@notice Address of the corresponding version of this token on the remote chain."},"functionSelector":"033964be","mutability":"immutable","name":"REMOTE_TOKEN","nameLocation":"1047:12:229","scope":109645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109439,"name":"address","nodeType":"ElementaryTypeName","src":"1022:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":109443,"nodeType":"VariableDeclaration","src":"1129:31:229","nodes":[],"constant":false,"documentation":{"id":109441,"nodeType":"StructuredDocumentation","src":"1066:58:229","text":"@notice Address of the StandardBridge on this network."},"functionSelector":"ee9a31a2","mutability":"immutable","name":"BRIDGE","nameLocation":"1154:6:229","scope":109645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109442,"name":"address","nodeType":"ElementaryTypeName","src":"1129:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":109446,"nodeType":"VariableDeclaration","src":"1205:32:229","nodes":[],"constant":false,"documentation":{"id":109444,"nodeType":"StructuredDocumentation","src":"1167:33:229","text":"@notice Decimals of the token"},"mutability":"immutable","name":"DECIMALS","nameLocation":"1229:8:229","scope":109645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":109445,"name":"uint8","nodeType":"ElementaryTypeName","src":"1205:5:229","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"id":109453,"nodeType":"EventDefinition","src":"1434:52:229","nodes":[],"anonymous":false,"documentation":{"id":109447,"nodeType":"StructuredDocumentation","src":"1244:185:229","text":"@notice Emitted whenever tokens are minted for an account.\n @param account Address of the account tokens are being minted for.\n @param amount  Amount of tokens minted."},"eventSelector":"0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885","name":"Mint","nameLocation":"1440:4:229","parameters":{"id":109452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109449,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1461:7:229","nodeType":"VariableDeclaration","scope":109453,"src":"1445:23:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109448,"name":"address","nodeType":"ElementaryTypeName","src":"1445:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":109451,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1478:6:229","nodeType":"VariableDeclaration","scope":109453,"src":"1470:14:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109450,"name":"uint256","nodeType":"ElementaryTypeName","src":"1470:7:229","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1444:41:229"}},{"id":109460,"nodeType":"EventDefinition","src":"1684:52:229","nodes":[],"anonymous":false,"documentation":{"id":109454,"nodeType":"StructuredDocumentation","src":"1492:187:229","text":"@notice Emitted whenever tokens are burned from an account.\n @param account Address of the account tokens are being burned from.\n @param amount  Amount of tokens burned."},"eventSelector":"cc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5","name":"Burn","nameLocation":"1690:4:229","parameters":{"id":109459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109456,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1711:7:229","nodeType":"VariableDeclaration","scope":109460,"src":"1695:23:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109455,"name":"address","nodeType":"ElementaryTypeName","src":"1695:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":109458,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1728:6:229","nodeType":"VariableDeclaration","scope":109460,"src":"1720:14:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109457,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:229","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1694:41:229"}},{"id":109473,"nodeType":"ModifierDefinition","src":"1805:135:229","nodes":[],"body":{"id":109472,"nodeType":"Block","src":"1827:113:229","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":109467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":109464,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1845:3:229","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":109465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1845:10:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":109466,"name":"BRIDGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109443,"src":"1859:6:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1845:20:229","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696467652063616e206d696e7420616e64206275726e","id":109468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1867:54:229","typeDescriptions":{"typeIdentifier":"t_stringliteral_684e9b7e2c7fdcb543a3efbe7d9ca90113ea3f2c0463752c3d3de870c67a963a","typeString":"literal_string \"OptimismMintableERC20: only bridge can mint and burn\""},"value":"OptimismMintableERC20: only bridge can mint and burn"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_684e9b7e2c7fdcb543a3efbe7d9ca90113ea3f2c0463752c3d3de870c67a963a","typeString":"literal_string \"OptimismMintableERC20: only bridge can mint and burn\""}],"id":109463,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1837:7:229","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":109469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1837:85:229","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109470,"nodeType":"ExpressionStatement","src":"1837:85:229"},{"id":109471,"nodeType":"PlaceholderStatement","src":"1932:1:229"}]},"documentation":{"id":109461,"nodeType":"StructuredDocumentation","src":"1742:58:229","text":"@notice A modifier that only allows the bridge to call"},"name":"onlyBridge","nameLocation":"1814:10:229","parameters":{"id":109462,"nodeType":"ParameterList","parameters":[],"src":"1824:2:229"},"virtual":false,"visibility":"internal"},{"id":109477,"nodeType":"VariableDeclaration","src":"2009:40:229","nodes":[],"baseFunctions":[109416],"constant":true,"documentation":{"id":109474,"nodeType":"StructuredDocumentation","src":"1946:58:229","text":"@notice Semantic version.\n @custom:semver 1.3.0"},"functionSelector":"54fd4d50","mutability":"constant","name":"version","nameLocation":"2032:7:229","scope":109645,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":109475,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:229","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"312e332e30","id":109476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2042:7:229","typeDescriptions":{"typeIdentifier":"t_stringliteral_6a08c3e203132c561752255a4d52ffae85bb9c5d33cb3291520dea1b84356389","typeString":"literal_string \"1.3.0\""},"value":"1.3.0"},"visibility":"public"},{"id":109508,"nodeType":"FunctionDefinition","src":"2268:292:229","nodes":[],"body":{"id":109507,"nodeType":"Block","src":"2460:100:229","nodes":[],"statements":[{"expression":{"id":109497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":109495,"name":"REMOTE_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109440,"src":"2470:12:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":109496,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109482,"src":"2485:12:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2470:27:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":109498,"nodeType":"ExpressionStatement","src":"2470:27:229"},{"expression":{"id":109501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":109499,"name":"BRIDGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109443,"src":"2507:6:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":109500,"name":"_bridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109480,"src":"2516:7:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2507:16:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":109502,"nodeType":"ExpressionStatement","src":"2507:16:229"},{"expression":{"id":109505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":109503,"name":"DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109446,"src":"2533:8:229","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":109504,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109488,"src":"2544:9:229","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2533:20:229","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":109506,"nodeType":"ExpressionStatement","src":"2533:20:229"}]},"documentation":{"id":109478,"nodeType":"StructuredDocumentation","src":"2056:207:229","text":"@param _bridge      Address of the L2 standard bridge.\n @param _remoteToken Address of the corresponding L1 token.\n @param _name        ERC20 name.\n @param _symbol      ERC20 symbol."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":109491,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109484,"src":"2440:5:229","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":109492,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109486,"src":"2447:7:229","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":109493,"kind":"baseConstructorSpecifier","modifierName":{"id":109490,"name":"ERC20","nodeType":"IdentifierPath","referencedDeclaration":50304,"src":"2434:5:229"},"nodeType":"ModifierInvocation","src":"2434:21:229"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":109489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109480,"mutability":"mutable","name":"_bridge","nameLocation":"2297:7:229","nodeType":"VariableDeclaration","scope":109508,"src":"2289:15:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109479,"name":"address","nodeType":"ElementaryTypeName","src":"2289:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":109482,"mutability":"mutable","name":"_remoteToken","nameLocation":"2322:12:229","nodeType":"VariableDeclaration","scope":109508,"src":"2314:20:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109481,"name":"address","nodeType":"ElementaryTypeName","src":"2314:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":109484,"mutability":"mutable","name":"_name","nameLocation":"2358:5:229","nodeType":"VariableDeclaration","scope":109508,"src":"2344:19:229","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":109483,"name":"string","nodeType":"ElementaryTypeName","src":"2344:6:229","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":109486,"mutability":"mutable","name":"_symbol","nameLocation":"2387:7:229","nodeType":"VariableDeclaration","scope":109508,"src":"2373:21:229","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":109485,"name":"string","nodeType":"ElementaryTypeName","src":"2373:6:229","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":109488,"mutability":"mutable","name":"_decimals","nameLocation":"2410:9:229","nodeType":"VariableDeclaration","scope":109508,"src":"2404:15:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":109487,"name":"uint8","nodeType":"ElementaryTypeName","src":"2404:5:229","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2279:146:229"},"returnParameters":{"id":109494,"nodeType":"ParameterList","parameters":[],"src":"2460:0:229"},"scope":109645,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":109532,"nodeType":"FunctionDefinition","src":"2739:254:229","nodes":[],"body":{"id":109531,"nodeType":"Block","src":"2924:69:229","nodes":[],"statements":[{"expression":{"arguments":[{"id":109522,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109511,"src":"2940:3:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":109523,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109513,"src":"2945:7:229","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":109521,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50121,"src":"2934:5:229","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":109524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2934:19:229","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109525,"nodeType":"ExpressionStatement","src":"2934:19:229"},{"eventCall":{"arguments":[{"id":109527,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109511,"src":"2973:3:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":109528,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109513,"src":"2978:7:229","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":109526,"name":"Mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109453,"src":"2968:4:229","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":109529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2968:18:229","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109530,"nodeType":"EmitStatement","src":"2963:23:229"}]},"baseFunctions":[109302,109325],"documentation":{"id":109509,"nodeType":"StructuredDocumentation","src":"2566:168:229","text":"@notice Allows the StandardBridge on this network to mint tokens.\n @param _to     Address to mint tokens to.\n @param _amount Amount of tokens to mint."},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":109519,"kind":"modifierInvocation","modifierName":{"id":109518,"name":"onlyBridge","nodeType":"IdentifierPath","referencedDeclaration":109473,"src":"2909:10:229"},"nodeType":"ModifierInvocation","src":"2909:10:229"}],"name":"mint","nameLocation":"2748:4:229","overrides":{"id":109517,"nodeType":"OverrideSpecifier","overrides":[{"id":109515,"name":"IOptimismMintableERC20","nodeType":"IdentifierPath","referencedDeclaration":109310,"src":"2855:22:229"},{"id":109516,"name":"ILegacyMintableERC20","nodeType":"IdentifierPath","referencedDeclaration":109333,"src":"2879:20:229"}],"src":"2846:54:229"},"parameters":{"id":109514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109511,"mutability":"mutable","name":"_to","nameLocation":"2770:3:229","nodeType":"VariableDeclaration","scope":109532,"src":"2762:11:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109510,"name":"address","nodeType":"ElementaryTypeName","src":"2762:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":109513,"mutability":"mutable","name":"_amount","nameLocation":"2791:7:229","nodeType":"VariableDeclaration","scope":109532,"src":"2783:15:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109512,"name":"uint256","nodeType":"ElementaryTypeName","src":"2783:7:229","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2752:52:229"},"returnParameters":{"id":109520,"nodeType":"ParameterList","parameters":[],"src":"2924:0:229"},"scope":109645,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":109556,"nodeType":"FunctionDefinition","src":"3174:260:229","nodes":[],"body":{"id":109555,"nodeType":"Block","src":"3361:73:229","nodes":[],"statements":[{"expression":{"arguments":[{"id":109546,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109535,"src":"3377:5:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":109547,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109537,"src":"3384:7:229","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":109545,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50193,"src":"3371:5:229","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":109548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3371:21:229","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109549,"nodeType":"ExpressionStatement","src":"3371:21:229"},{"eventCall":{"arguments":[{"id":109551,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109535,"src":"3412:5:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":109552,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109537,"src":"3419:7:229","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":109550,"name":"Burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109460,"src":"3407:4:229","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":109553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3407:20:229","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109554,"nodeType":"EmitStatement","src":"3402:25:229"}]},"baseFunctions":[109309,109332],"documentation":{"id":109533,"nodeType":"StructuredDocumentation","src":"2999:170:229","text":"@notice Allows the StandardBridge on this network to burn tokens.\n @param _from   Address to burn tokens from.\n @param _amount Amount of tokens to burn."},"functionSelector":"9dc29fac","implemented":true,"kind":"function","modifiers":[{"id":109543,"kind":"modifierInvocation","modifierName":{"id":109542,"name":"onlyBridge","nodeType":"IdentifierPath","referencedDeclaration":109473,"src":"3346:10:229"},"nodeType":"ModifierInvocation","src":"3346:10:229"}],"name":"burn","nameLocation":"3183:4:229","overrides":{"id":109541,"nodeType":"OverrideSpecifier","overrides":[{"id":109539,"name":"IOptimismMintableERC20","nodeType":"IdentifierPath","referencedDeclaration":109310,"src":"3292:22:229"},{"id":109540,"name":"ILegacyMintableERC20","nodeType":"IdentifierPath","referencedDeclaration":109333,"src":"3316:20:229"}],"src":"3283:54:229"},"parameters":{"id":109538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109535,"mutability":"mutable","name":"_from","nameLocation":"3205:5:229","nodeType":"VariableDeclaration","scope":109556,"src":"3197:13:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109534,"name":"address","nodeType":"ElementaryTypeName","src":"3197:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":109537,"mutability":"mutable","name":"_amount","nameLocation":"3228:7:229","nodeType":"VariableDeclaration","scope":109556,"src":"3220:15:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":109536,"name":"uint256","nodeType":"ElementaryTypeName","src":"3220:7:229","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3187:54:229"},"returnParameters":{"id":109544,"nodeType":"ParameterList","parameters":[],"src":"3361:0:229"},"scope":109645,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":109598,"nodeType":"FunctionDefinition","src":"3616:519:229","nodes":[],"body":{"id":109597,"nodeType":"Block","src":"3701:434:229","nodes":[],"statements":[{"assignments":[109565],"declarations":[{"constant":false,"id":109565,"mutability":"mutable","name":"iface1","nameLocation":"3718:6:229","nodeType":"VariableDeclaration","scope":109597,"src":"3711:13:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":109564,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3711:6:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":109570,"initialValue":{"expression":{"arguments":[{"id":109567,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54446,"src":"3732:7:229","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$54446_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$54446_$","typeString":"type(contract IERC165)"}],"id":109566,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3727:4:229","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":109568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3727:13:229","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$54446","typeString":"type(contract IERC165)"}},"id":109569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"3727:25:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"3711:41:229"},{"assignments":[109572],"declarations":[{"constant":false,"id":109572,"mutability":"mutable","name":"iface2","nameLocation":"3835:6:229","nodeType":"VariableDeclaration","scope":109597,"src":"3828:13:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":109571,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3828:6:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":109577,"initialValue":{"expression":{"arguments":[{"id":109574,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109333,"src":"3849:20:229","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$109333_$","typeString":"type(contract ILegacyMintableERC20)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$109333_$","typeString":"type(contract ILegacyMintableERC20)"}],"id":109573,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3844:4:229","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":109575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3844:26:229","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ILegacyMintableERC20_$109333","typeString":"type(contract ILegacyMintableERC20)"}},"id":109576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"3844:38:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"3828:54:229"},{"assignments":[109579],"declarations":[{"constant":false,"id":109579,"mutability":"mutable","name":"iface3","nameLocation":"3988:6:229","nodeType":"VariableDeclaration","scope":109597,"src":"3981:13:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":109578,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3981:6:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":109584,"initialValue":{"expression":{"arguments":[{"id":109581,"name":"IOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109310,"src":"4002:22:229","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOptimismMintableERC20_$109310_$","typeString":"type(contract IOptimismMintableERC20)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IOptimismMintableERC20_$109310_$","typeString":"type(contract IOptimismMintableERC20)"}],"id":109580,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3997:4:229","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":109582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3997:28:229","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IOptimismMintableERC20_$109310","typeString":"type(contract IOptimismMintableERC20)"}},"id":109583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"3997:40:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"3981:56:229"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":109595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":109591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":109587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":109585,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109559,"src":"4054:12:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":109586,"name":"iface1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109565,"src":"4070:6:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4054:22:229","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":109590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":109588,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109559,"src":"4080:12:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":109589,"name":"iface2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109572,"src":"4096:6:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4080:22:229","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4054:48:229","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":109594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":109592,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109559,"src":"4106:12:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":109593,"name":"iface3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109579,"src":"4122:6:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4106:22:229","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4054:74:229","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":109563,"id":109596,"nodeType":"Return","src":"4047:81:229"}]},"baseFunctions":[54445],"documentation":{"id":109557,"nodeType":"StructuredDocumentation","src":"3440:171:229","text":"@notice ERC165 interface check function.\n @param _interfaceId Interface ID to check.\n @return Whether or not the interface is supported by this contract."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"3625:17:229","parameters":{"id":109560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109559,"mutability":"mutable","name":"_interfaceId","nameLocation":"3650:12:229","nodeType":"VariableDeclaration","scope":109598,"src":"3643:19:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":109558,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3643:6:229","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3642:21:229"},"returnParameters":{"id":109563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":109598,"src":"3695:4:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":109561,"name":"bool","nodeType":"ElementaryTypeName","src":"3695:4:229","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3694:6:229"},"scope":109645,"stateMutability":"pure","virtual":true,"visibility":"external"},{"id":109607,"nodeType":"FunctionDefinition","src":"4248:85:229","nodes":[],"body":{"id":109606,"nodeType":"Block","src":"4297:36:229","nodes":[],"statements":[{"expression":{"id":109604,"name":"REMOTE_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109440,"src":"4314:12:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":109603,"id":109605,"nodeType":"Return","src":"4307:19:229"}]},"baseFunctions":[109318],"documentation":{"id":109599,"nodeType":"StructuredDocumentation","src":"4141:102:229","text":"@custom:legacy\n @notice Legacy getter for the remote token. Use REMOTE_TOKEN going forward."},"functionSelector":"c01e1bd6","implemented":true,"kind":"function","modifiers":[],"name":"l1Token","nameLocation":"4257:7:229","parameters":{"id":109600,"nodeType":"ParameterList","parameters":[],"src":"4264:2:229"},"returnParameters":{"id":109603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109602,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":109607,"src":"4288:7:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109601,"name":"address","nodeType":"ElementaryTypeName","src":"4288:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4287:9:229"},"scope":109645,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":109616,"nodeType":"FunctionDefinition","src":"4434:80:229","nodes":[],"body":{"id":109615,"nodeType":"Block","src":"4484:30:229","nodes":[],"statements":[{"expression":{"id":109613,"name":"BRIDGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109443,"src":"4501:6:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":109612,"id":109614,"nodeType":"Return","src":"4494:13:229"}]},"documentation":{"id":109608,"nodeType":"StructuredDocumentation","src":"4339:90:229","text":"@custom:legacy\n @notice Legacy getter for the bridge. Use BRIDGE going forward."},"functionSelector":"ae1f6aaf","implemented":true,"kind":"function","modifiers":[],"name":"l2Bridge","nameLocation":"4443:8:229","parameters":{"id":109609,"nodeType":"ParameterList","parameters":[],"src":"4451:2:229"},"returnParameters":{"id":109612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":109616,"src":"4475:7:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109610,"name":"address","nodeType":"ElementaryTypeName","src":"4475:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4474:9:229"},"scope":109645,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":109625,"nodeType":"FunctionDefinition","src":"4591:89:229","nodes":[],"body":{"id":109624,"nodeType":"Block","src":"4644:36:229","nodes":[],"statements":[{"expression":{"id":109622,"name":"REMOTE_TOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109440,"src":"4661:12:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":109621,"id":109623,"nodeType":"Return","src":"4654:19:229"}]},"baseFunctions":[109290],"documentation":{"id":109617,"nodeType":"StructuredDocumentation","src":"4520:66:229","text":"@custom:legacy\n @notice Legacy getter for REMOTE_TOKEN."},"functionSelector":"d6c0b2c4","implemented":true,"kind":"function","modifiers":[],"name":"remoteToken","nameLocation":"4600:11:229","parameters":{"id":109618,"nodeType":"ParameterList","parameters":[],"src":"4611:2:229"},"returnParameters":{"id":109621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109620,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":109625,"src":"4635:7:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109619,"name":"address","nodeType":"ElementaryTypeName","src":"4635:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4634:9:229"},"scope":109645,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":109634,"nodeType":"FunctionDefinition","src":"4751:78:229","nodes":[],"body":{"id":109633,"nodeType":"Block","src":"4799:30:229","nodes":[],"statements":[{"expression":{"id":109631,"name":"BRIDGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109443,"src":"4816:6:229","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":109630,"id":109632,"nodeType":"Return","src":"4809:13:229"}]},"baseFunctions":[109295],"documentation":{"id":109626,"nodeType":"StructuredDocumentation","src":"4686:60:229","text":"@custom:legacy\n @notice Legacy getter for BRIDGE."},"functionSelector":"e78cea92","implemented":true,"kind":"function","modifiers":[],"name":"bridge","nameLocation":"4760:6:229","parameters":{"id":109627,"nodeType":"ParameterList","parameters":[],"src":"4766:2:229"},"returnParameters":{"id":109630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":109634,"src":"4790:7:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":109628,"name":"address","nodeType":"ElementaryTypeName","src":"4790:7:229","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4789:9:229"},"scope":109645,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":109644,"nodeType":"FunctionDefinition","src":"5252:89:229","nodes":[],"body":{"id":109643,"nodeType":"Block","src":"5309:32:229","nodes":[],"statements":[{"expression":{"id":109641,"name":"DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109446,"src":"5326:8:229","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":109640,"id":109642,"nodeType":"Return","src":"5319:15:229"}]},"baseFunctions":[49793],"documentation":{"id":109635,"nodeType":"StructuredDocumentation","src":"4835:412:229","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 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","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"5261:8:229","overrides":{"id":109637,"nodeType":"OverrideSpecifier","overrides":[],"src":"5284:8:229"},"parameters":{"id":109636,"nodeType":"ParameterList","parameters":[],"src":"5269:2:229"},"returnParameters":{"id":109640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109639,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":109644,"src":"5302:5:229","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":109638,"name":"uint8","nodeType":"ElementaryTypeName","src":"5302:5:229","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5301:7:229"},"scope":109645,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":109430,"name":"IOptimismMintableERC20","nodeType":"IdentifierPath","referencedDeclaration":109310,"src":"867:22:229"},"id":109431,"nodeType":"InheritanceSpecifier","src":"867:22:229"},{"baseName":{"id":109432,"name":"ILegacyMintableERC20","nodeType":"IdentifierPath","referencedDeclaration":109333,"src":"891:20:229"},"id":109433,"nodeType":"InheritanceSpecifier","src":"891:20:229"},{"baseName":{"id":109434,"name":"ERC20","nodeType":"IdentifierPath","referencedDeclaration":50304,"src":"913:5:229"},"id":109435,"nodeType":"InheritanceSpecifier","src":"913:5:229"},{"baseName":{"id":109436,"name":"ISemver","nodeType":"IdentifierPath","referencedDeclaration":109417,"src":"920:7:229"},"id":109437,"nodeType":"InheritanceSpecifier","src":"920:7:229"}],"canonicalName":"OptimismMintableERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":109429,"nodeType":"StructuredDocumentation","src":"370:463:229","text":"@title OptimismMintableERC20\n @notice OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed\n         to allow the StandardBridge contracts to mint and burn tokens. This makes it possible to\n         use an OptimismMintablERC20 as the L2 representation of an L1 token, or vice-versa.\n         Designed to be backwards compatible with the older StandardL2ERC20 token which was only\n         meant for use on L2."},"fullyImplemented":true,"linearizedBaseContracts":[109645,109417,50304,51088,50382,53291,109333,109310,54446],"name":"OptimismMintableERC20","nameLocation":"842:21:229","scope":109646,"usedErrors":[]}],"license":"MIT"},"id":229}