{"abi":[{"type":"function","name":"DEF_LEVELING_COF1","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"DEF_LEVELING_COF2","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"DEF_LEVELING_COF3","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"DEF_LEVELING_COF4","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"IERC1155_BURNABLE","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"IERC20_BURNABLE_V1","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"IERC20_BURNABLE_V2","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"advanceToNextLevel","inputs":[{"name":"_project","type":"bytes32","internalType":"bytes32"},{"name":"_node","type":"bytes32","internalType":"bytes32"},{"name":"_burnExperienceTokenAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"experience","inputs":[{"name":"_project","type":"bytes32","internalType":"bytes32"},{"name":"_node","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"level","inputs":[{"name":"_project","type":"bytes32","internalType":"bytes32"},{"name":"_node","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"levelingProjects","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"formula","type":"address","internalType":"address"},{"name":"experienceToken","type":"address","internalType":"address"},{"name":"experienceTokenId","type":"uint256","internalType":"uint256"},{"name":"burnInterface","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"setProjectLevelingRules","inputs":[{"name":"_project","type":"bytes32","internalType":"bytes32"},{"name":"_levelingFormulaProxy","type":"address","internalType":"address"},{"name":"_experienceToken","type":"address","internalType":"address"},{"name":"_experienceTokenId","type":"uint256","internalType":"uint256"},{"name":"_burnInterface","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceID","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"AdvancedToNextLevel","inputs":[{"name":"project","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"node","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newExperience","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalExperience","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProjectLevelingRulesChanged","inputs":[{"name":"project","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"burnInterface","type":"bytes4","indexed":true,"internalType":"bytes4"},{"name":"experienceToken","type":"address","indexed":true,"internalType":"address"},{"name":"experienceTokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"levelingFormulaProxy","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DEF_LEVELING_COF1()":"3186b795","DEF_LEVELING_COF2()":"26120e8b","DEF_LEVELING_COF3()":"308608ad","DEF_LEVELING_COF4()":"ce5ab5d3","IERC1155_BURNABLE()":"f65bba57","IERC20_BURNABLE_V1()":"992f100f","IERC20_BURNABLE_V2()":"c6f67e2d","advanceToNextLevel(bytes32,bytes32,uint256)":"d33e7f51","experience(bytes32,bytes32)":"7a605462","level(bytes32,bytes32)":"b1982413","levelingProjects(bytes32)":"e5ef9a2b","setProjectLevelingRules(bytes32,address,address,uint256,bytes4)":"418e528a","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"project\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newExperience\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalExperience\",\"type\":\"uint256\"}],\"name\":\"AdvancedToNextLevel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"project\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"burnInterface\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"experienceToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"experienceTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"levelingFormulaProxy\",\"type\":\"address\"}],\"name\":\"ProjectLevelingRulesChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEF_LEVELING_COF1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEF_LEVELING_COF2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEF_LEVELING_COF3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEF_LEVELING_COF4\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IERC1155_BURNABLE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IERC20_BURNABLE_V1\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IERC20_BURNABLE_V2\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_project\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_node\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_burnExperienceTokenAmount\",\"type\":\"uint256\"}],\"name\":\"advanceToNextLevel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_project\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_node\",\"type\":\"bytes32\"}],\"name\":\"experience\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_project\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_node\",\"type\":\"bytes32\"}],\"name\":\"level\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"levelingProjects\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"formula\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"experienceToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"experienceTokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes4\",\"name\":\"burnInterface\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_project\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_levelingFormulaProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_experienceToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_experienceTokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes4\",\"name\":\"_burnInterface\",\"type\":\"bytes4\"}],\"name\":\"setProjectLevelingRules\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Any owner of a node can configure own leveling system for other NFT owners.      He configures his node as project for external usage, defining experience token and leveling formula.      NFT owner needs to burn experience tokens set for such a project to level up.      Leveling formula can be set as an oracle conract, or default formula      500*level^2-500*level=exp will be used.\",\"kind\":\"dev\",\"methods\":{\"advanceToNextLevel(bytes32,bytes32,uint256)\":{\"details\":\"Burn experience tokens to advance in leveling.\",\"params\":{\"_burnExperienceTokenAmount\":\"amount of experience tokens to burn.\",\"_node\":\"the node to update.\",\"_project\":\"node for a project which issue experience.\"},\"returns\":{\"_0\":\"updated experience.\"}},\"experience(bytes32,bytes32)\":{\"details\":\"Experience in scope of project.\",\"params\":{\"_node\":\"the node to query.\",\"_project\":\"node for a project which issue experience.\"},\"returns\":{\"_0\":\"project experience\"}},\"level(bytes32,bytes32)\":{\"details\":\"Level based on experience.\",\"params\":{\"_node\":\"the node to query.\",\"_project\":\"node for a project which issue experience.\"},\"returns\":{\"_0\":\"level based on experience\"}},\"setProjectLevelingRules(bytes32,address,address,uint256,bytes4)\":{\"details\":\"Project controller can update leveling system and experience token.\",\"params\":{\"_burnInterface\":\"signature of burning function: 0xf5298aca, 0x9dc29fac or 0x79cc6790 (default).\",\"_experienceToken\":\"address of experience token. \",\"_experienceTokenId\":\"experience token id in case of ERC1155, pass 0 for ERC20.\",\"_levelingFormulaProxy\":\"address of proxy contract which implements ILevelingFormula, pass address(0) for default formula.\",\"_project\":\"node for a project which issue experience.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Check if specific interface is implemented.\",\"params\":{\"interfaceID\":\"Keccak of matched interface.\"},\"returns\":{\"_0\":\"true if implemented.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/resolver/profile/LevelResolver.sol\":\"LevelResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@le7el/=node_modules/@le7el/\",\":@le7el/generative_art/=node_modules/@le7el/generative_art/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0\",\"dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"node_modules/@le7el/web3_crs/contracts/resolver/BaseResolver.sol\":{\"keccak256\":\"0x461a8dbdb0ebaa5b6e3db590387b3db0e6a53ca26ca68f71c8f4ee76f712d705\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b66c6620b5b8cc76c3fef742f500b65036e6a7260d625f35e1d8176bab64203\",\"dweb:/ipfs/QmVesMAMhS6jSCZywTZwcDW8A63dRbxuQuYzWoMxjhRuzG\"]},\"node_modules/@le7el/web3_crs/contracts/resolver/ISupportsInterface.sol\":{\"keccak256\":\"0xfa518f3a6f66d0b1ea55c2410c907225732d845b0b5ae08d974c5a41b26ee1fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66dc2e00febd00c6e968b6501ffc60c0f6e5ddf567f5d05fee7bb8a2a1a001d2\",\"dweb:/ipfs/QmeZ6nZxdqwtZ176nQGzQVjtR4JdMys7bAUocHXQBKNLRb\"]},\"node_modules/@le7el/web3_crs/contracts/resolver/SupportsInterface.sol\":{\"keccak256\":\"0x179aa7374e9bad89213ad06192c5d5f68405e01b0118c6298536807efb9be5e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://693657bede206924c400c0a8a8ea87c13b5c0a88ac416034ed957f7fbd523d16\",\"dweb:/ipfs/QmUMDK9yVt8BeFdJB1KJWs3UcroZ2eVag66fJmewS7PzXN\"]},\"src/interface/IERC1155Burnable.sol\":{\"keccak256\":\"0x0c3a31e60668f4c7b7f502f69a7be1c73ba44fe762361f7e09dcdc48b9966ad4\",\"license\":\"MPL-2.0\",\"urls\":[\"bzz-raw://ef45b49604d03e8b37809fef620a9b466ce727fef82fe2113b562bd90ea3e1bc\",\"dweb:/ipfs/QmQ6rPB3Lv3zsicYfX2UAEEnq1veLbviUhAhPSU1g5Edfh\"]},\"src/interface/IERC20.sol\":{\"keccak256\":\"0xd0546c96aa1bc67be269884fce1efd3f19435d528a63589bb5ff4835e3730cf8\",\"license\":\"MPL-2.0\",\"urls\":[\"bzz-raw://bdb72e89d80eb1c272be2064e5b582aec5d405471983a1e833b873ad43ee571b\",\"dweb:/ipfs/QmZLDjwCJvihZxjtAxB7ADV6XgjpPtmCsPhGj2qFEo9VFu\"]},\"src/interface/IERC20BurnableV1.sol\":{\"keccak256\":\"0x62a88173ec6ccd5ae81de17bac6f9fad41245cd3566459b753d976d677bff1a9\",\"license\":\"MPL-2.0\",\"urls\":[\"bzz-raw://141b185896eab9d09fd3fa060dae1c73e90b99e973320fe9199424cdea57cc14\",\"dweb:/ipfs/QmWjGeWLD9iqMHqrb8WHzc9objdcDJGcyii7v8uQw2Tt2U\"]},\"src/interface/IERC20BurnableV2.sol\":{\"keccak256\":\"0x595fa8ebd6e5b8ce39180ba9f36e470ae1f7da6a80e312f0c9f522ababd7172a\",\"license\":\"MPL-2.0\",\"urls\":[\"bzz-raw://85da5ca02ca41f09b1d5b2411eabd8018afdcf541ceffcc77caaa4e6d8b1ca35\",\"dweb:/ipfs/QmRdHrYjQGeGJJ3mLCGY1xnRnWY3CNUfqGf1LkkV4Cig7u\"]},\"src/resolver/profile/ILevelResolver.sol\":{\"keccak256\":\"0x36c3a092dc58dac4963db5c651e23ee270c1ba4bcf21fc29ff9a819014d41c01\",\"license\":\"MPL-2.0\",\"urls\":[\"bzz-raw://a3c4c20fd098754f522554ac5237e37d171e5f471451add69b41d4fa72d576c6\",\"dweb:/ipfs/QmdEfbaaPEXLKY8RYK7bKtMPLkiyk4pFjtCiABWHhv2aeX\"]},\"src/resolver/profile/ILevelingFormula.sol\":{\"keccak256\":\"0x99ea76f39c9987505462fccc5399422149a6cd02832e6ffe3706368ca866af37\",\"license\":\"MPL-2.0\",\"urls\":[\"bzz-raw://f7859a17d5b645144e544697b7b6a70b9add8e4df583101882d13836b08d785e\",\"dweb:/ipfs/QmZSynUmUK6HY6qLaMTWHXzMa134UGp6v8v73Wwp1E6pke\"]},\"src/resolver/profile/LevelResolver.sol\":{\"keccak256\":\"0xb91c4c1e47f56b20e85b88a3aa69f924327f47ed4a2dd4b6a33598f81d68f37d\",\"license\":\"MPL-2.0\",\"urls\":[\"bzz-raw://d009503d8bb3bfa01750e8b75a5d3ee511e3db29303e9f323660a74bcc3edded\",\"dweb:/ipfs/QmWvLnnTbLBWrvyeNhb8u35qk82yWoq2a7o5CDCZKRBvjN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.17+commit.8df45f5f"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"bytes32","name":"project","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"node","type":"bytes32","indexed":true},{"internalType":"uint256","name":"newExperience","type":"uint256","indexed":false},{"internalType":"uint256","name":"totalExperience","type":"uint256","indexed":false}],"type":"event","name":"AdvancedToNextLevel","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"project","type":"bytes32","indexed":true},{"internalType":"bytes4","name":"burnInterface","type":"bytes4","indexed":true},{"internalType":"address","name":"experienceToken","type":"address","indexed":true},{"internalType":"uint256","name":"experienceTokenId","type":"uint256","indexed":false},{"internalType":"address","name":"levelingFormulaProxy","type":"address","indexed":false}],"type":"event","name":"ProjectLevelingRulesChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEF_LEVELING_COF1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEF_LEVELING_COF2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEF_LEVELING_COF3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEF_LEVELING_COF4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IERC1155_BURNABLE","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IERC20_BURNABLE_V1","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IERC20_BURNABLE_V2","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"bytes32","name":"_project","type":"bytes32"},{"internalType":"bytes32","name":"_node","type":"bytes32"},{"internalType":"uint256","name":"_burnExperienceTokenAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"advanceToNextLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"_project","type":"bytes32"},{"internalType":"bytes32","name":"_node","type":"bytes32"}],"stateMutability":"view","type":"function","name":"experience","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"_project","type":"bytes32"},{"internalType":"bytes32","name":"_node","type":"bytes32"}],"stateMutability":"view","type":"function","name":"level","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"levelingProjects","outputs":[{"internalType":"address","name":"formula","type":"address"},{"internalType":"address","name":"experienceToken","type":"address"},{"internalType":"uint256","name":"experienceTokenId","type":"uint256"},{"internalType":"bytes4","name":"burnInterface","type":"bytes4"}]},{"inputs":[{"internalType":"bytes32","name":"_project","type":"bytes32"},{"internalType":"address","name":"_levelingFormulaProxy","type":"address"},{"internalType":"address","name":"_experienceToken","type":"address"},{"internalType":"uint256","name":"_experienceTokenId","type":"uint256"},{"internalType":"bytes4","name":"_burnInterface","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"setProjectLevelingRules"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"stateMutability":"pure","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"advanceToNextLevel(bytes32,bytes32,uint256)":{"details":"Burn experience tokens to advance in leveling.","params":{"_burnExperienceTokenAmount":"amount of experience tokens to burn.","_node":"the node to update.","_project":"node for a project which issue experience."},"returns":{"_0":"updated experience."}},"experience(bytes32,bytes32)":{"details":"Experience in scope of project.","params":{"_node":"the node to query.","_project":"node for a project which issue experience."},"returns":{"_0":"project experience"}},"level(bytes32,bytes32)":{"details":"Level based on experience.","params":{"_node":"the node to query.","_project":"node for a project which issue experience."},"returns":{"_0":"level based on experience"}},"setProjectLevelingRules(bytes32,address,address,uint256,bytes4)":{"details":"Project controller can update leveling system and experience token.","params":{"_burnInterface":"signature of burning function: 0xf5298aca, 0x9dc29fac or 0x79cc6790 (default).","_experienceToken":"address of experience token. ","_experienceTokenId":"experience token id in case of ERC1155, pass 0 for ERC20.","_levelingFormulaProxy":"address of proxy contract which implements ILevelingFormula, pass address(0) for default formula.","_project":"node for a project which issue experience."}},"supportsInterface(bytes4)":{"details":"Check if specific interface is implemented.","params":{"interfaceID":"Keccak of matched interface."},"returns":{"_0":"true if implemented."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@le7el/=node_modules/@le7el/","@le7el/generative_art/=node_modules/@le7el/generative_art/","@openzeppelin/=lib/openzeppelin-contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solmate/=lib/solmate/src/","src/=src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/resolver/profile/LevelResolver.sol":"LevelResolver"},"libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x6392f2cfe3a5ee802227fe7a2dfd47096d881aec89bddd214b35c5b46d3cd941","urls":["bzz-raw://bd9c47a375639888e726a99da718890ba16d17d7ad9eacb0ccc892d46d1b3ee0","dweb:/ipfs/Qmb41W5RUjy2sWg49A2rMnxekSeEk6SvGyJL5tyCCSr7un"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"node_modules/@le7el/web3_crs/contracts/resolver/BaseResolver.sol":{"keccak256":"0x461a8dbdb0ebaa5b6e3db590387b3db0e6a53ca26ca68f71c8f4ee76f712d705","urls":["bzz-raw://6b66c6620b5b8cc76c3fef742f500b65036e6a7260d625f35e1d8176bab64203","dweb:/ipfs/QmVesMAMhS6jSCZywTZwcDW8A63dRbxuQuYzWoMxjhRuzG"],"license":"MIT"},"node_modules/@le7el/web3_crs/contracts/resolver/ISupportsInterface.sol":{"keccak256":"0xfa518f3a6f66d0b1ea55c2410c907225732d845b0b5ae08d974c5a41b26ee1fe","urls":["bzz-raw://66dc2e00febd00c6e968b6501ffc60c0f6e5ddf567f5d05fee7bb8a2a1a001d2","dweb:/ipfs/QmeZ6nZxdqwtZ176nQGzQVjtR4JdMys7bAUocHXQBKNLRb"],"license":"MIT"},"node_modules/@le7el/web3_crs/contracts/resolver/SupportsInterface.sol":{"keccak256":"0x179aa7374e9bad89213ad06192c5d5f68405e01b0118c6298536807efb9be5e1","urls":["bzz-raw://693657bede206924c400c0a8a8ea87c13b5c0a88ac416034ed957f7fbd523d16","dweb:/ipfs/QmUMDK9yVt8BeFdJB1KJWs3UcroZ2eVag66fJmewS7PzXN"],"license":"MIT"},"src/interface/IERC1155Burnable.sol":{"keccak256":"0x0c3a31e60668f4c7b7f502f69a7be1c73ba44fe762361f7e09dcdc48b9966ad4","urls":["bzz-raw://ef45b49604d03e8b37809fef620a9b466ce727fef82fe2113b562bd90ea3e1bc","dweb:/ipfs/QmQ6rPB3Lv3zsicYfX2UAEEnq1veLbviUhAhPSU1g5Edfh"],"license":"MPL-2.0"},"src/interface/IERC20.sol":{"keccak256":"0xd0546c96aa1bc67be269884fce1efd3f19435d528a63589bb5ff4835e3730cf8","urls":["bzz-raw://bdb72e89d80eb1c272be2064e5b582aec5d405471983a1e833b873ad43ee571b","dweb:/ipfs/QmZLDjwCJvihZxjtAxB7ADV6XgjpPtmCsPhGj2qFEo9VFu"],"license":"MPL-2.0"},"src/interface/IERC20BurnableV1.sol":{"keccak256":"0x62a88173ec6ccd5ae81de17bac6f9fad41245cd3566459b753d976d677bff1a9","urls":["bzz-raw://141b185896eab9d09fd3fa060dae1c73e90b99e973320fe9199424cdea57cc14","dweb:/ipfs/QmWjGeWLD9iqMHqrb8WHzc9objdcDJGcyii7v8uQw2Tt2U"],"license":"MPL-2.0"},"src/interface/IERC20BurnableV2.sol":{"keccak256":"0x595fa8ebd6e5b8ce39180ba9f36e470ae1f7da6a80e312f0c9f522ababd7172a","urls":["bzz-raw://85da5ca02ca41f09b1d5b2411eabd8018afdcf541ceffcc77caaa4e6d8b1ca35","dweb:/ipfs/QmRdHrYjQGeGJJ3mLCGY1xnRnWY3CNUfqGf1LkkV4Cig7u"],"license":"MPL-2.0"},"src/resolver/profile/ILevelResolver.sol":{"keccak256":"0x36c3a092dc58dac4963db5c651e23ee270c1ba4bcf21fc29ff9a819014d41c01","urls":["bzz-raw://a3c4c20fd098754f522554ac5237e37d171e5f471451add69b41d4fa72d576c6","dweb:/ipfs/QmdEfbaaPEXLKY8RYK7bKtMPLkiyk4pFjtCiABWHhv2aeX"],"license":"MPL-2.0"},"src/resolver/profile/ILevelingFormula.sol":{"keccak256":"0x99ea76f39c9987505462fccc5399422149a6cd02832e6ffe3706368ca866af37","urls":["bzz-raw://f7859a17d5b645144e544697b7b6a70b9add8e4df583101882d13836b08d785e","dweb:/ipfs/QmZSynUmUK6HY6qLaMTWHXzMa134UGp6v8v73Wwp1E6pke"],"license":"MPL-2.0"},"src/resolver/profile/LevelResolver.sol":{"keccak256":"0xb91c4c1e47f56b20e85b88a3aa69f924327f47ed4a2dd4b6a33598f81d68f37d","urls":["bzz-raw://d009503d8bb3bfa01750e8b75a5d3ee511e3db29303e9f323660a74bcc3edded","dweb:/ipfs/QmWvLnnTbLBWrvyeNhb8u35qk82yWoq2a7o5CDCZKRBvjN"],"license":"MPL-2.0"}},"version":1},"ast":{"absolutePath":"src/resolver/profile/LevelResolver.sol","id":61500,"exportedSymbols":{"BaseResolver":[55739],"IERC1155":[47040],"IERC1155Burnable":[58719],"IERC165":[49885],"IERC20":[58727],"IERC20BurnableV1":[58737],"IERC20BurnableV2":[58747],"ILevelResolver":[61071],"ILevelingFormula":[61082],"ISupportsInterface":[55918],"LevelResolver":[61499],"SupportsInterface":[56035]},"nodeType":"SourceUnit","src":"36:6833:119","nodes":[{"id":61084,"nodeType":"PragmaDirective","src":"36:24:119","nodes":[],"literals":["solidity","^","0.8",".17"]},{"id":61085,"nodeType":"ImportDirective","src":"62:60:119","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol","file":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","nameLocation":"-1:-1:-1","scope":61500,"sourceUnit":47041,"symbolAliases":[],"unitAlias":""},{"id":61086,"nodeType":"ImportDirective","src":"123:61:119","nodes":[],"absolutePath":"node_modules/@le7el/web3_crs/contracts/resolver/BaseResolver.sol","file":"@le7el/web3_crs/contracts/resolver/BaseResolver.sol","nameLocation":"-1:-1:-1","scope":61500,"sourceUnit":55740,"symbolAliases":[],"unitAlias":""},{"id":61087,"nodeType":"ImportDirective","src":"185:36:119","nodes":[],"absolutePath":"src/interface/IERC20.sol","file":"../../interface/IERC20.sol","nameLocation":"-1:-1:-1","scope":61500,"sourceUnit":58728,"symbolAliases":[],"unitAlias":""},{"id":61088,"nodeType":"ImportDirective","src":"222:46:119","nodes":[],"absolutePath":"src/interface/IERC1155Burnable.sol","file":"../../interface/IERC1155Burnable.sol","nameLocation":"-1:-1:-1","scope":61500,"sourceUnit":58720,"symbolAliases":[],"unitAlias":""},{"id":61089,"nodeType":"ImportDirective","src":"269:46:119","nodes":[],"absolutePath":"src/interface/IERC20BurnableV1.sol","file":"../../interface/IERC20BurnableV1.sol","nameLocation":"-1:-1:-1","scope":61500,"sourceUnit":58738,"symbolAliases":[],"unitAlias":""},{"id":61090,"nodeType":"ImportDirective","src":"316:46:119","nodes":[],"absolutePath":"src/interface/IERC20BurnableV2.sol","file":"../../interface/IERC20BurnableV2.sol","nameLocation":"-1:-1:-1","scope":61500,"sourceUnit":58748,"symbolAliases":[],"unitAlias":""},{"id":61091,"nodeType":"ImportDirective","src":"363:32:119","nodes":[],"absolutePath":"src/resolver/profile/ILevelingFormula.sol","file":"./ILevelingFormula.sol","nameLocation":"-1:-1:-1","scope":61500,"sourceUnit":61083,"symbolAliases":[],"unitAlias":""},{"id":61092,"nodeType":"ImportDirective","src":"396:30:119","nodes":[],"absolutePath":"src/resolver/profile/ILevelResolver.sol","file":"./ILevelResolver.sol","nameLocation":"-1:-1:-1","scope":61500,"sourceUnit":61072,"symbolAliases":[],"unitAlias":""},{"id":61499,"nodeType":"ContractDefinition","src":"842:6027:119","nodes":[{"id":61100,"nodeType":"VariableDeclaration","src":"984:47:119","nodes":[],"constant":true,"functionSelector":"3186b795","mutability":"constant","name":"DEF_LEVELING_COF1","nameLocation":"1008:17:119","scope":61499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61098,"name":"uint256","nodeType":"ElementaryTypeName","src":"984:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353030","id":61099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1028:3:119","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"visibility":"public"},{"id":61103,"nodeType":"VariableDeclaration","src":"1037:50:119","nodes":[],"constant":true,"functionSelector":"26120e8b","mutability":"constant","name":"DEF_LEVELING_COF2","nameLocation":"1061:17:119","scope":61499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61101,"name":"uint256","nodeType":"ElementaryTypeName","src":"1037:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323530303030","id":61102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1081:6:119","typeDescriptions":{"typeIdentifier":"t_rational_250000_by_1","typeString":"int_const 250000"},"value":"250000"},"visibility":"public"},{"id":61106,"nodeType":"VariableDeclaration","src":"1093:48:119","nodes":[],"constant":true,"functionSelector":"308608ad","mutability":"constant","name":"DEF_LEVELING_COF3","nameLocation":"1117:17:119","scope":61499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32303030","id":61105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1137:4:119","typeDescriptions":{"typeIdentifier":"t_rational_2000_by_1","typeString":"int_const 2000"},"value":"2000"},"visibility":"public"},{"id":61109,"nodeType":"VariableDeclaration","src":"1147:48:119","nodes":[],"constant":true,"functionSelector":"ce5ab5d3","mutability":"constant","name":"DEF_LEVELING_COF4","nameLocation":"1171:17:119","scope":61499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61107,"name":"uint256","nodeType":"ElementaryTypeName","src":"1147:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31303030","id":61108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1191:4:119","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},"visibility":"public"},{"id":61112,"nodeType":"VariableDeclaration","src":"1202:53:119","nodes":[],"constant":true,"functionSelector":"f65bba57","mutability":"constant","name":"IERC1155_BURNABLE","nameLocation":"1225:17:119","scope":61499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":61110,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1202:6:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30786635323938616361","id":61111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1245:10:119","typeDescriptions":{"typeIdentifier":"t_rational_4113140426_by_1","typeString":"int_const 4113140426"},"value":"0xf5298aca"},"visibility":"public"},{"id":61115,"nodeType":"VariableDeclaration","src":"1261:54:119","nodes":[],"constant":true,"functionSelector":"992f100f","mutability":"constant","name":"IERC20_BURNABLE_V1","nameLocation":"1284:18:119","scope":61499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":61113,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1261:6:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783739636336373930","id":61114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1305:10:119","typeDescriptions":{"typeIdentifier":"t_rational_2043438992_by_1","typeString":"int_const 2043438992"},"value":"0x79cc6790"},"visibility":"public"},{"id":61118,"nodeType":"VariableDeclaration","src":"1321:54:119","nodes":[],"constant":true,"functionSelector":"c6f67e2d","mutability":"constant","name":"IERC20_BURNABLE_V2","nameLocation":"1344:18:119","scope":61499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":61116,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1321:6:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783964633239666163","id":61117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1365:10:119","typeDescriptions":{"typeIdentifier":"t_rational_2646777772_by_1","typeString":"int_const 2646777772"},"value":"0x9dc29fac"},"visibility":"public"},{"id":61127,"nodeType":"StructDefinition","src":"1386:144:119","nodes":[],"canonicalName":"LevelResolver.Project","members":[{"constant":false,"id":61120,"mutability":"mutable","name":"formula","nameLocation":"1418:7:119","nodeType":"VariableDeclaration","scope":61127,"src":"1410:15:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61119,"name":"address","nodeType":"ElementaryTypeName","src":"1410:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61122,"mutability":"mutable","name":"experienceToken","nameLocation":"1443:15:119","nodeType":"VariableDeclaration","scope":61127,"src":"1435:23:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61121,"name":"address","nodeType":"ElementaryTypeName","src":"1435:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61124,"mutability":"mutable","name":"experienceTokenId","nameLocation":"1476:17:119","nodeType":"VariableDeclaration","scope":61127,"src":"1468:25:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61123,"name":"uint256","nodeType":"ElementaryTypeName","src":"1468:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61126,"mutability":"mutable","name":"burnInterface","nameLocation":"1510:13:119","nodeType":"VariableDeclaration","scope":61127,"src":"1503:20:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":61125,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1503:6:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"name":"Project","nameLocation":"1393:7:119","scope":61499,"visibility":"public"},{"id":61133,"nodeType":"VariableDeclaration","src":"1536:71:119","nodes":[],"constant":false,"mutability":"mutable","name":"levelingExperience","nameLocation":"1589:18:119","scope":61499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(bytes32 => uint256))"},"typeName":{"id":61132,"keyType":{"id":61128,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1544:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1536:43:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(bytes32 => uint256))"},"valueType":{"id":61131,"keyType":{"id":61129,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1561:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1553:25:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":61130,"name":"uint256","nodeType":"ElementaryTypeName","src":"1570:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"id":61138,"nodeType":"VariableDeclaration","src":"1613:49:119","nodes":[],"constant":false,"functionSelector":"e5ef9a2b","mutability":"mutable","name":"levelingProjects","nameLocation":"1646:16:119","scope":61499,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Project_$61127_storage_$","typeString":"mapping(bytes32 => struct LevelResolver.Project)"},"typeName":{"id":61137,"keyType":{"id":61134,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1621:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1613:25:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Project_$61127_storage_$","typeString":"mapping(bytes32 => struct LevelResolver.Project)"},"valueType":{"id":61136,"nodeType":"UserDefinedTypeName","pathNode":{"id":61135,"name":"Project","nameLocations":["1630:7:119"],"nodeType":"IdentifierPath","referencedDeclaration":61127,"src":"1630:7:119"},"referencedDeclaration":61127,"src":"1630:7:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_storage_ptr","typeString":"struct LevelResolver.Project"}}},"visibility":"public"},{"id":61255,"nodeType":"FunctionDefinition","src":"1963:1260:119","nodes":[],"body":{"id":61254,"nodeType":"Block","src":"2143:1080:119","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61154,"name":"_burnExperienceTokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61145,"src":"2161:26:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":61155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2190:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2161:30:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6e6f20616476616e636520696e206c6576656c696e67","id":61157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2193:24:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_d9f502a12d603dc4721f35cab3037fa801c823a885bf55b1898f3514f8f50864","typeString":"literal_string \"no advance in leveling\""},"value":"no advance in leveling"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d9f502a12d603dc4721f35cab3037fa801c823a885bf55b1898f3514f8f50864","typeString":"literal_string \"no advance in leveling\""}],"id":61153,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2153:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":61158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2153:65:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61159,"nodeType":"ExpressionStatement","src":"2153:65:119"},{"assignments":[61162],"declarations":[{"constant":false,"id":61162,"mutability":"mutable","name":"_levelingProject","nameLocation":"2243:16:119","nodeType":"VariableDeclaration","scope":61254,"src":"2228:31:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_memory_ptr","typeString":"struct LevelResolver.Project"},"typeName":{"id":61161,"nodeType":"UserDefinedTypeName","pathNode":{"id":61160,"name":"Project","nameLocations":["2228:7:119"],"nodeType":"IdentifierPath","referencedDeclaration":61127,"src":"2228:7:119"},"referencedDeclaration":61127,"src":"2228:7:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_storage_ptr","typeString":"struct LevelResolver.Project"}},"visibility":"internal"}],"id":61166,"initialValue":{"baseExpression":{"id":61163,"name":"levelingProjects","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61138,"src":"2262:16:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Project_$61127_storage_$","typeString":"mapping(bytes32 => struct LevelResolver.Project storage ref)"}},"id":61165,"indexExpression":{"id":61164,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61141,"src":"2279:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2262:26:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_storage","typeString":"struct LevelResolver.Project storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2228:60:119"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":61174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":61168,"name":"_levelingProject","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61162,"src":"2306:16:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_memory_ptr","typeString":"struct LevelResolver.Project memory"}},"id":61169,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2323:15:119","memberName":"experienceToken","nodeType":"MemberAccess","referencedDeclaration":61122,"src":"2306:32:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":61172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":61171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2342:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61170,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:119","typeDescriptions":{}}},"id":61173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2342:10:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2306:46:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"756e726567697374657265642070726f6a656374","id":61175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2354:22:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_1dd25f5f5a78e1f46e7eb9d6f9908c52b75a2f2c644aa14b95c343c06b05d149","typeString":"literal_string \"unregistered project\""},"value":"unregistered project"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1dd25f5f5a78e1f46e7eb9d6f9908c52b75a2f2c644aa14b95c343c06b05d149","typeString":"literal_string \"unregistered project\""}],"id":61167,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2298:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":61176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2298:79:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61177,"nodeType":"ExpressionStatement","src":"2298:79:119"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":61181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":61178,"name":"_levelingProject","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61162,"src":"2392:16:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_memory_ptr","typeString":"struct LevelResolver.Project memory"}},"id":61179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2409:13:119","memberName":"burnInterface","nodeType":"MemberAccess","referencedDeclaration":61126,"src":"2392:30:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":61180,"name":"IERC1155_BURNABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61112,"src":"2426:17:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2392:51:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":61198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":61195,"name":"_levelingProject","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61162,"src":"2611:16:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_memory_ptr","typeString":"struct LevelResolver.Project memory"}},"id":61196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2628:13:119","memberName":"burnInterface","nodeType":"MemberAccess","referencedDeclaration":61126,"src":"2611:30:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":61197,"name":"IERC20_BURNABLE_V2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61118,"src":"2645:18:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2611:52:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":61220,"nodeType":"Block","src":"2791:124:119","statements":[{"expression":{"arguments":[{"expression":{"id":61215,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2865:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2869:6:119","memberName":"sender","nodeType":"MemberAccess","src":"2865:10:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61217,"name":"_burnExperienceTokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61145,"src":"2877:26:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":61211,"name":"_levelingProject","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61162,"src":"2822:16:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_memory_ptr","typeString":"struct LevelResolver.Project memory"}},"id":61212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2839:15:119","memberName":"experienceToken","nodeType":"MemberAccess","referencedDeclaration":61122,"src":"2822:32:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61210,"name":"IERC20BurnableV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58737,"src":"2805:16:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20BurnableV1_$58737_$","typeString":"type(contract IERC20BurnableV1)"}},"id":61213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2805:50:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20BurnableV1_$58737","typeString":"contract IERC20BurnableV1"}},"id":61214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2856:8:119","memberName":"burnFrom","nodeType":"MemberAccess","referencedDeclaration":58736,"src":"2805:59:119","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":61218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2805:99:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61219,"nodeType":"ExpressionStatement","src":"2805:99:119"}]},"id":61221,"nodeType":"IfStatement","src":"2607:308:119","trueBody":{"id":61209,"nodeType":"Block","src":"2665:120:119","statements":[{"expression":{"arguments":[{"expression":{"id":61204,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2735:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2739:6:119","memberName":"sender","nodeType":"MemberAccess","src":"2735:10:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61206,"name":"_burnExperienceTokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61145,"src":"2747:26:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":61200,"name":"_levelingProject","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61162,"src":"2696:16:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_memory_ptr","typeString":"struct LevelResolver.Project memory"}},"id":61201,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2713:15:119","memberName":"experienceToken","nodeType":"MemberAccess","referencedDeclaration":61122,"src":"2696:32:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61199,"name":"IERC20BurnableV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58747,"src":"2679:16:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20BurnableV2_$58747_$","typeString":"type(contract IERC20BurnableV2)"}},"id":61202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2679:50:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20BurnableV2_$58747","typeString":"contract IERC20BurnableV2"}},"id":61203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2730:4:119","memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":58746,"src":"2679:55:119","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":61207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2679:95:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61208,"nodeType":"ExpressionStatement","src":"2679:95:119"}]}},"id":61222,"nodeType":"IfStatement","src":"2388:527:119","trueBody":{"id":61194,"nodeType":"Block","src":"2445:156:119","statements":[{"expression":{"arguments":[{"expression":{"id":61187,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2515:3:119","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2519:6:119","memberName":"sender","nodeType":"MemberAccess","src":"2515:10:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":61189,"name":"_levelingProject","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61162,"src":"2527:16:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_memory_ptr","typeString":"struct LevelResolver.Project memory"}},"id":61190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2544:17:119","memberName":"experienceTokenId","nodeType":"MemberAccess","referencedDeclaration":61124,"src":"2527:34:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61191,"name":"_burnExperienceTokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61145,"src":"2563:26:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":61183,"name":"_levelingProject","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61162,"src":"2476:16:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_memory_ptr","typeString":"struct LevelResolver.Project memory"}},"id":61184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2493:15:119","memberName":"experienceToken","nodeType":"MemberAccess","referencedDeclaration":61122,"src":"2476:32:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61182,"name":"IERC1155Burnable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58719,"src":"2459:16:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Burnable_$58719_$","typeString":"type(contract IERC1155Burnable)"}},"id":61185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2459:50:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1155Burnable_$58719","typeString":"contract IERC1155Burnable"}},"id":61186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2510:4:119","memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":58718,"src":"2459:55:119","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) external"}},"id":61192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2459:131:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61193,"nodeType":"ExpressionStatement","src":"2459:131:119"}]}},{"assignments":[61224],"declarations":[{"constant":false,"id":61224,"mutability":"mutable","name":"_currentExp","nameLocation":"2932:11:119","nodeType":"VariableDeclaration","scope":61254,"src":"2924:19:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61223,"name":"uint256","nodeType":"ElementaryTypeName","src":"2924:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61230,"initialValue":{"baseExpression":{"baseExpression":{"id":61225,"name":"levelingExperience","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61133,"src":"2946:18:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(bytes32 => uint256))"}},"id":61227,"indexExpression":{"id":61226,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61143,"src":"2965:5:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2946:25:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":61229,"indexExpression":{"id":61228,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61141,"src":"2972:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2946:35:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2924:57:119"},{"assignments":[61232],"declarations":[{"constant":false,"id":61232,"mutability":"mutable","name":"_newExp","nameLocation":"2999:7:119","nodeType":"VariableDeclaration","scope":61254,"src":"2991:15:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61231,"name":"uint256","nodeType":"ElementaryTypeName","src":"2991:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61236,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61233,"name":"_currentExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61224,"src":"3009:11:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":61234,"name":"_burnExperienceTokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61145,"src":"3023:26:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3009:40:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2991:58:119"},{"expression":{"id":61243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":61237,"name":"levelingExperience","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61133,"src":"3059:18:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(bytes32 => uint256))"}},"id":61240,"indexExpression":{"id":61238,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61143,"src":"3078:5:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3059:25:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":61241,"indexExpression":{"id":61239,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61141,"src":"3085:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3059:35:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":61242,"name":"_newExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61232,"src":"3097:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3059:45:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61244,"nodeType":"ExpressionStatement","src":"3059:45:119"},{"eventCall":{"arguments":[{"id":61246,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61141,"src":"3139:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":61247,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61143,"src":"3149:5:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":61248,"name":"_burnExperienceTokenAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61145,"src":"3156:26:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61249,"name":"_newExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61232,"src":"3184:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61245,"name":"AdvancedToNextLevel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61038,"src":"3119:19:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,bytes32,uint256,uint256)"}},"id":61250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3119:73:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61251,"nodeType":"EmitStatement","src":"3114:78:119"},{"expression":{"id":61252,"name":"_newExp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61232,"src":"3209:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61152,"id":61253,"nodeType":"Return","src":"3202:14:119"}]},"documentation":{"id":61139,"nodeType":"StructuredDocumentation","src":"1669:289:119","text":" @dev Burn experience tokens to advance in leveling.\n @param _project node for a project which issue experience.\n @param _node the node to update.\n @param _burnExperienceTokenAmount amount of experience tokens to burn.\n @return updated experience."},"functionSelector":"d33e7f51","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":61148,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61143,"src":"2118:5:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":61149,"kind":"modifierInvocation","modifierName":{"id":61147,"name":"authorised","nameLocations":["2107:10:119"],"nodeType":"IdentifierPath","referencedDeclaration":55722,"src":"2107:10:119"},"nodeType":"ModifierInvocation","src":"2107:17:119"}],"name":"advanceToNextLevel","nameLocation":"1972:18:119","parameters":{"id":61146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61141,"mutability":"mutable","name":"_project","nameLocation":"2008:8:119","nodeType":"VariableDeclaration","scope":61255,"src":"2000:16:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":61140,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2000:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":61143,"mutability":"mutable","name":"_node","nameLocation":"2034:5:119","nodeType":"VariableDeclaration","scope":61255,"src":"2026:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":61142,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2026:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":61145,"mutability":"mutable","name":"_burnExperienceTokenAmount","nameLocation":"2057:26:119","nodeType":"VariableDeclaration","scope":61255,"src":"2049:34:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61144,"name":"uint256","nodeType":"ElementaryTypeName","src":"2049:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1990:99:119"},"returnParameters":{"id":61152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61255,"src":"2134:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61150,"name":"uint256","nodeType":"ElementaryTypeName","src":"2134:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2133:9:119"},"scope":61499,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":61292,"nodeType":"FunctionDefinition","src":"3785:502:119","nodes":[],"body":{"id":61291,"nodeType":"Block","src":"4028:259:119","nodes":[],"statements":[{"expression":{"id":61281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":61272,"name":"levelingProjects","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61138,"src":"4038:16:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Project_$61127_storage_$","typeString":"mapping(bytes32 => struct LevelResolver.Project storage ref)"}},"id":61274,"indexExpression":{"id":61273,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61258,"src":"4055:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4038:26:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_storage","typeString":"struct LevelResolver.Project storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":61276,"name":"_levelingFormulaProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61260,"src":"4075:21:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61277,"name":"_experienceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61262,"src":"4098:16:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61278,"name":"_experienceTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61264,"src":"4116:18:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61279,"name":"_burnInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61266,"src":"4136:14:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":61275,"name":"Project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61127,"src":"4067:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Project_$61127_storage_ptr_$","typeString":"type(struct LevelResolver.Project storage pointer)"}},"id":61280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4067:84:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_memory_ptr","typeString":"struct LevelResolver.Project memory"}},"src":"4038:113:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_storage","typeString":"struct LevelResolver.Project storage ref"}},"id":61282,"nodeType":"ExpressionStatement","src":"4038:113:119"},{"eventCall":{"arguments":[{"id":61284,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61258,"src":"4194:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":61285,"name":"_burnInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61266,"src":"4204:14:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":61286,"name":"_experienceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61262,"src":"4220:16:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61287,"name":"_experienceTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61264,"src":"4238:18:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61288,"name":"_levelingFormulaProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61260,"src":"4258:21:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61283,"name":"ProjectLevelingRulesChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61050,"src":"4166:27:119","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes4_$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (bytes32,bytes4,address,uint256,address)"}},"id":61289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4166:114:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61290,"nodeType":"EmitStatement","src":"4161:119:119"}]},"documentation":{"id":61256,"nodeType":"StructuredDocumentation","src":"3229:551:119","text":" @dev Project controller can update leveling system and experience token.\n @param _project node for a project which issue experience.\n @param _levelingFormulaProxy address of proxy contract which implements ILevelingFormula, pass address(0) for default formula.\n @param _experienceToken address of experience token. \n @param _experienceTokenId experience token id in case of ERC1155, pass 0 for ERC20.\n @param _burnInterface signature of burning function: 0xf5298aca, 0x9dc29fac or 0x79cc6790 (default)."},"functionSelector":"418e528a","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":61269,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61258,"src":"4018:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":61270,"kind":"modifierInvocation","modifierName":{"id":61268,"name":"authorised","nameLocations":["4007:10:119"],"nodeType":"IdentifierPath","referencedDeclaration":55722,"src":"4007:10:119"},"nodeType":"ModifierInvocation","src":"4007:20:119"}],"name":"setProjectLevelingRules","nameLocation":"3794:23:119","parameters":{"id":61267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61258,"mutability":"mutable","name":"_project","nameLocation":"3835:8:119","nodeType":"VariableDeclaration","scope":61292,"src":"3827:16:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":61257,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3827:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":61260,"mutability":"mutable","name":"_levelingFormulaProxy","nameLocation":"3861:21:119","nodeType":"VariableDeclaration","scope":61292,"src":"3853:29:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61259,"name":"address","nodeType":"ElementaryTypeName","src":"3853:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61262,"mutability":"mutable","name":"_experienceToken","nameLocation":"3900:16:119","nodeType":"VariableDeclaration","scope":61292,"src":"3892:24:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61261,"name":"address","nodeType":"ElementaryTypeName","src":"3892:7:119","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61264,"mutability":"mutable","name":"_experienceTokenId","nameLocation":"3934:18:119","nodeType":"VariableDeclaration","scope":61292,"src":"3926:26:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61263,"name":"uint256","nodeType":"ElementaryTypeName","src":"3926:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61266,"mutability":"mutable","name":"_burnInterface","nameLocation":"3969:14:119","nodeType":"VariableDeclaration","scope":61292,"src":"3962:21:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":61265,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3962:6:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3817:172:119"},"returnParameters":{"id":61271,"nodeType":"ParameterList","parameters":[],"src":"4028:0:119"},"scope":61499,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":61365,"nodeType":"FunctionDefinition","src":"4494:643:119","nodes":[],"body":{"id":61364,"nodeType":"Block","src":"4591:546:119","nodes":[],"statements":[{"assignments":[61304],"declarations":[{"constant":false,"id":61304,"mutability":"mutable","name":"_exp","nameLocation":"4609:4:119","nodeType":"VariableDeclaration","scope":61364,"src":"4601:12:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61303,"name":"uint256","nodeType":"ElementaryTypeName","src":"4601:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61310,"initialValue":{"baseExpression":{"baseExpression":{"id":61305,"name":"levelingExperience","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61133,"src":"4616:18:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(bytes32 => uint256))"}},"id":61307,"indexExpression":{"id":61306,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61297,"src":"4635:5:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4616:25:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":61309,"indexExpression":{"id":61308,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61295,"src":"4642:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4616:35:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4601:50:119"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61311,"name":"_exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61304,"src":"4665:4:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":61312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4673:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4665:9:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61316,"nodeType":"IfStatement","src":"4661:23:119","trueBody":{"expression":{"hexValue":"31","id":61314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4683:1:119","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":61302,"id":61315,"nodeType":"Return","src":"4676:8:119"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":61325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":61317,"name":"levelingProjects","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61138,"src":"4698:16:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Project_$61127_storage_$","typeString":"mapping(bytes32 => struct LevelResolver.Project storage ref)"}},"id":61319,"indexExpression":{"id":61318,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61295,"src":"4715:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4698:26:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_storage","typeString":"struct LevelResolver.Project storage ref"}},"id":61320,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4725:7:119","memberName":"formula","nodeType":"MemberAccess","referencedDeclaration":61120,"src":"4698:34:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":61323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4744:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":61322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4736:7:119","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61321,"name":"address","nodeType":"ElementaryTypeName","src":"4736:7:119","typeDescriptions":{}}},"id":61324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4736:10:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4698:48:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":61362,"nodeType":"Block","src":"5030:101:119","statements":[{"expression":{"arguments":[{"id":61359,"name":"_exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61304,"src":"5115:4:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"baseExpression":{"id":61353,"name":"levelingProjects","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61138,"src":"5068:16:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Project_$61127_storage_$","typeString":"mapping(bytes32 => struct LevelResolver.Project storage ref)"}},"id":61355,"indexExpression":{"id":61354,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61295,"src":"5085:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5068:26:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_storage","typeString":"struct LevelResolver.Project storage ref"}},"id":61356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5095:7:119","memberName":"formula","nodeType":"MemberAccess","referencedDeclaration":61120,"src":"5068:34:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61352,"name":"ILevelingFormula","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61082,"src":"5051:16:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILevelingFormula_$61082_$","typeString":"type(contract ILevelingFormula)"}},"id":61357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5051:52:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILevelingFormula_$61082","typeString":"contract ILevelingFormula"}},"id":61358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5104:10:119","memberName":"expToLevel","nodeType":"MemberAccess","referencedDeclaration":61081,"src":"5051:63:119","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":61360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5051:69:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61302,"id":61361,"nodeType":"Return","src":"5044:76:119"}]},"id":61363,"nodeType":"IfStatement","src":"4694:437:119","trueBody":{"id":61351,"nodeType":"Block","src":"4748:276:119","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":61331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":61326,"name":"levelingProjects","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61138,"src":"4766:16:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Project_$61127_storage_$","typeString":"mapping(bytes32 => struct LevelResolver.Project storage ref)"}},"id":61328,"indexExpression":{"id":61327,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61295,"src":"4783:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4766:26:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_storage","typeString":"struct LevelResolver.Project storage ref"}},"id":61329,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4793:13:119","memberName":"burnInterface","nodeType":"MemberAccess","referencedDeclaration":61126,"src":"4766:40:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":61330,"name":"IERC1155_BURNABLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61112,"src":"4810:17:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4766:61:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61345,"nodeType":"IfStatement","src":"4762:199:119","trueBody":{"id":61344,"nodeType":"Block","src":"4829:132:119","statements":[{"expression":{"arguments":[{"id":61333,"name":"_exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61304,"src":"4878:4:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"baseExpression":{"id":61335,"name":"levelingProjects","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61138,"src":"4891:16:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Project_$61127_storage_$","typeString":"mapping(bytes32 => struct LevelResolver.Project storage ref)"}},"id":61337,"indexExpression":{"id":61336,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61295,"src":"4908:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4891:26:119","typeDescriptions":{"typeIdentifier":"t_struct$_Project_$61127_storage","typeString":"struct LevelResolver.Project storage ref"}},"id":61338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4918:15:119","memberName":"experienceToken","nodeType":"MemberAccess","referencedDeclaration":61122,"src":"4891:42:119","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61334,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58727,"src":"4884:6:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$58727_$","typeString":"type(contract IERC20)"}},"id":61339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4884:50:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$58727","typeString":"contract IERC20"}},"id":61340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4935:8:119","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":58726,"src":"4884:59:119","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":61341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4884:61:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61332,"name":"_defaultLevelingFormula","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61443,"src":"4854:23:119","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":61342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4854:92:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61302,"id":61343,"nodeType":"Return","src":"4847:99:119"}]}},{"expression":{"arguments":[{"id":61347,"name":"_exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61304,"src":"5005:4:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":61348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5011:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":61346,"name":"_defaultLevelingFormula","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61443,"src":"4981:23:119","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":61349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4981:32:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61302,"id":61350,"nodeType":"Return","src":"4974:39:119"}]}}]},"baseFunctions":[61060],"documentation":{"id":61293,"nodeType":"StructuredDocumentation","src":"4293:196:119","text":" @dev Level based on experience.\n @param _project node for a project which issue experience.\n @param _node the node to query.\n @return level based on experience"},"functionSelector":"b1982413","implemented":true,"kind":"function","modifiers":[],"name":"level","nameLocation":"4503:5:119","overrides":{"id":61299,"nodeType":"OverrideSpecifier","overrides":[],"src":"4550:8:119"},"parameters":{"id":61298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61295,"mutability":"mutable","name":"_project","nameLocation":"4517:8:119","nodeType":"VariableDeclaration","scope":61365,"src":"4509:16:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":61294,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4509:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":61297,"mutability":"mutable","name":"_node","nameLocation":"4535:5:119","nodeType":"VariableDeclaration","scope":61365,"src":"4527:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":61296,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4527:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4508:33:119"},"returnParameters":{"id":61302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61365,"src":"4582:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61300,"name":"uint256","nodeType":"ElementaryTypeName","src":"4582:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4581:9:119"},"scope":61499,"stateMutability":"view","virtual":true,"visibility":"external"},{"id":61383,"nodeType":"FunctionDefinition","src":"5342:161:119","nodes":[],"body":{"id":61382,"nodeType":"Block","src":"5444:59:119","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":61376,"name":"levelingExperience","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61133,"src":"5461:18:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(bytes32 => mapping(bytes32 => uint256))"}},"id":61378,"indexExpression":{"id":61377,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61370,"src":"5480:5:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5461:25:119","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":61380,"indexExpression":{"id":61379,"name":"_project","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61368,"src":"5487:8:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5461:35:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61375,"id":61381,"nodeType":"Return","src":"5454:42:119"}]},"baseFunctions":[61070],"documentation":{"id":61366,"nodeType":"StructuredDocumentation","src":"5143:194:119","text":" @dev Experience in scope of project.\n @param _project node for a project which issue experience.\n @param _node the node to query.\n @return project experience"},"functionSelector":"7a605462","implemented":true,"kind":"function","modifiers":[],"name":"experience","nameLocation":"5351:10:119","overrides":{"id":61372,"nodeType":"OverrideSpecifier","overrides":[],"src":"5403:8:119"},"parameters":{"id":61371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61368,"mutability":"mutable","name":"_project","nameLocation":"5370:8:119","nodeType":"VariableDeclaration","scope":61383,"src":"5362:16:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":61367,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5362:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":61370,"mutability":"mutable","name":"_node","nameLocation":"5388:5:119","nodeType":"VariableDeclaration","scope":61383,"src":"5380:13:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":61369,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5380:7:119","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5361:33:119"},"returnParameters":{"id":61375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61374,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61383,"src":"5435:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61373,"name":"uint256","nodeType":"ElementaryTypeName","src":"5435:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5434:9:119"},"scope":61499,"stateMutability":"view","virtual":true,"visibility":"external"},{"id":61405,"nodeType":"FunctionDefinition","src":"5672:202:119","nodes":[],"body":{"id":61404,"nodeType":"Block","src":"5763:111:119","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":61402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":61397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61392,"name":"interfaceID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61386,"src":"5780:11:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":61394,"name":"ILevelResolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61071,"src":"5800:14:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILevelResolver_$61071_$","typeString":"type(contract ILevelResolver)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ILevelResolver_$61071_$","typeString":"type(contract ILevelResolver)"}],"id":61393,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5795:4:119","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":61395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5795:20:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ILevelResolver_$61071","typeString":"type(contract ILevelResolver)"}},"id":61396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5816:11:119","memberName":"interfaceId","nodeType":"MemberAccess","src":"5795:32:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5780:47:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":61400,"name":"interfaceID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61386,"src":"5855:11:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":61398,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5831:5:119","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_LevelResolver_$61499_$","typeString":"type(contract super LevelResolver)"}},"id":61399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5837:17:119","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":56034,"src":"5831:23:119","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) pure returns (bool)"}},"id":61401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5831:36:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5780:87:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":61391,"id":61403,"nodeType":"Return","src":"5773:94:119"}]},"baseFunctions":[56034],"documentation":{"id":61384,"nodeType":"StructuredDocumentation","src":"5509:158:119","text":" @dev Check if specific interface is implemented.\n @param interfaceID Keccak of matched interface.\n @return true if implemented."},"functionSelector":"01ffc9a7","implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"5681:17:119","overrides":{"id":61388,"nodeType":"OverrideSpecifier","overrides":[],"src":"5727:8:119"},"parameters":{"id":61387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61386,"mutability":"mutable","name":"interfaceID","nameLocation":"5706:11:119","nodeType":"VariableDeclaration","scope":61405,"src":"5699:18:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":61385,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5699:6:119","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5698:20:119"},"returnParameters":{"id":61391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61405,"src":"5757:4:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":61389,"name":"bool","nodeType":"ElementaryTypeName","src":"5757:4:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5756:6:119"},"scope":61499,"stateMutability":"pure","virtual":true,"visibility":"public"},{"id":61443,"nodeType":"FunctionDefinition","src":"6127:278:119","nodes":[],"body":{"id":61442,"nodeType":"Block","src":"6225:180:119","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61415,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61410,"src":"6239:9:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":61416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6251:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6239:13:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61427,"nodeType":"IfStatement","src":"6235:50:119","trueBody":{"expression":{"id":61425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":61418,"name":"_exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61408,"src":"6254:4:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61419,"name":"_exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61408,"src":"6261:4:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":61420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6269:2:119","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":61421,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61410,"src":"6275:9:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6269:15:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":61423,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6268:17:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6261:24:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6254:31:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61426,"nodeType":"ExpressionStatement","src":"6254:31:119"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61428,"name":"DEF_LEVELING_COF1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61100,"src":"6304:17:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61430,"name":"DEF_LEVELING_COF2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61103,"src":"6330:17:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61431,"name":"DEF_LEVELING_COF3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61106,"src":"6351:17:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":61432,"name":"_exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61408,"src":"6371:4:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6351:24:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":61434,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6350:26:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6330:46:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61429,"name":"_sqrt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61498,"src":"6324:5:119","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":61436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6324:53:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6304:73:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":61438,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6303:75:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":61439,"name":"DEF_LEVELING_COF4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61109,"src":"6381:17:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6303:95:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61414,"id":61441,"nodeType":"Return","src":"6296:102:119"}]},"documentation":{"id":61406,"nodeType":"StructuredDocumentation","src":"5880:242:119","text":" @dev Parabolic leveling formula similar to DnD 3.5 leveling system: 500*level^2-500*level=exp.\n @param _exp total experience.\n @param _decimals experience token decimals.\n @return level based on experience"},"implemented":true,"kind":"function","modifiers":[],"name":"_defaultLevelingFormula","nameLocation":"6136:23:119","parameters":{"id":61411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61408,"mutability":"mutable","name":"_exp","nameLocation":"6168:4:119","nodeType":"VariableDeclaration","scope":61443,"src":"6160:12:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61407,"name":"uint256","nodeType":"ElementaryTypeName","src":"6160:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61410,"mutability":"mutable","name":"_decimals","nameLocation":"6182:9:119","nodeType":"VariableDeclaration","scope":61443,"src":"6174:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61409,"name":"uint256","nodeType":"ElementaryTypeName","src":"6174:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6159:33:119"},"returnParameters":{"id":61414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61413,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61443,"src":"6216:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61412,"name":"uint256","nodeType":"ElementaryTypeName","src":"6216:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6215:9:119"},"scope":61499,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":61498,"nodeType":"FunctionDefinition","src":"6565:302:119","nodes":[],"body":{"id":61497,"nodeType":"Block","src":"6625:242:119","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61451,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61446,"src":"6639:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"33","id":61452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6643:1:119","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"6639:5:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61487,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61446,"src":"6823:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":61488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6828:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6823:6:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61495,"nodeType":"IfStatement","src":"6819:42:119","trueBody":{"id":61494,"nodeType":"Block","src":"6831:30:119","statements":[{"expression":{"id":61492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":61490,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61449,"src":"6845:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":61491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6849:1:119","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6845:5:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61493,"nodeType":"ExpressionStatement","src":"6845:5:119"}]}},"id":61496,"nodeType":"IfStatement","src":"6635:226:119","trueBody":{"id":61486,"nodeType":"Block","src":"6646:167:119","statements":[{"expression":{"id":61456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":61454,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61449,"src":"6660:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":61455,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61446,"src":"6664:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6660:5:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61457,"nodeType":"ExpressionStatement","src":"6660:5:119"},{"assignments":[61459],"declarations":[{"constant":false,"id":61459,"mutability":"mutable","name":"x","nameLocation":"6687:1:119","nodeType":"VariableDeclaration","scope":61486,"src":"6679:9:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61458,"name":"uint256","nodeType":"ElementaryTypeName","src":"6679:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61465,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61460,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61446,"src":"6691:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":61461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6695:1:119","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6691:5:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":61463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6699:1:119","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6691:9:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6679:21:119"},{"body":{"id":61484,"nodeType":"Block","src":"6728:75:119","statements":[{"expression":{"id":61471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":61469,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61449,"src":"6746:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":61470,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61459,"src":"6750:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6746:5:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61472,"nodeType":"ExpressionStatement","src":"6746:5:119"},{"expression":{"id":61482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":61473,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61459,"src":"6769:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61474,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61446,"src":"6774:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":61475,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61459,"src":"6778:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6774:5:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":61477,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61459,"src":"6782:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6774:9:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":61479,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6773:11:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":61480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6787:1:119","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6773:15:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6769:19:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61483,"nodeType":"ExpressionStatement","src":"6769:19:119"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61466,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61459,"src":"6721:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":61467,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61449,"src":"6725:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6721:5:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61485,"nodeType":"WhileStatement","src":"6714:89:119"}]}}]},"documentation":{"id":61444,"nodeType":"StructuredDocumentation","src":"6411:149:119","text":" @dev Square root, taken from Uniswap 2.0.\n @param y argument for square root.\n @return z a rounded square root result."},"implemented":true,"kind":"function","modifiers":[],"name":"_sqrt","nameLocation":"6574:5:119","parameters":{"id":61447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61446,"mutability":"mutable","name":"y","nameLocation":"6588:1:119","nodeType":"VariableDeclaration","scope":61498,"src":"6580:9:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61445,"name":"uint256","nodeType":"ElementaryTypeName","src":"6580:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6579:11:119"},"returnParameters":{"id":61450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61449,"mutability":"mutable","name":"z","nameLocation":"6622:1:119","nodeType":"VariableDeclaration","scope":61498,"src":"6614:9:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61448,"name":"uint256","nodeType":"ElementaryTypeName","src":"6614:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6613:11:119"},"scope":61499,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":61094,"name":"ILevelResolver","nameLocations":["877:14:119"],"nodeType":"IdentifierPath","referencedDeclaration":61071,"src":"877:14:119"},"id":61095,"nodeType":"InheritanceSpecifier","src":"877:14:119"},{"baseName":{"id":61096,"name":"BaseResolver","nameLocations":["893:12:119"],"nodeType":"IdentifierPath","referencedDeclaration":55739,"src":"893:12:119"},"id":61097,"nodeType":"InheritanceSpecifier","src":"893:12:119"}],"canonicalName":"LevelResolver","contractDependencies":[],"contractKind":"contract","documentation":{"id":61093,"nodeType":"StructuredDocumentation","src":"428:413:119","text":" @dev Any owner of a node can configure own leveling system for other NFT owners.\n      He configures his node as project for external usage, defining experience token and leveling formula.\n      NFT owner needs to burn experience tokens set for such a project to level up.\n      Leveling formula can be set as an oracle conract, or default formula\n      500*level^2-500*level=exp will be used."},"fullyImplemented":false,"linearizedBaseContracts":[61499,55739,56035,55918,61071],"name":"LevelResolver","nameLocation":"860:13:119","scope":61500,"usedErrors":[]}],"license":"MPL-2.0"},"id":119}