From 6607339e4975ab16452d27b316aff4d3aaf173c0 Mon Sep 17 00:00:00 2001 From: TuDo1403 Date: Wed, 13 Mar 2024 13:17:39 +0700 Subject: [PATCH] chore: add deployment artifact --- .../2020/run-1710239642.json | 32 + .../2020/run-1710239649.json | 61 + .../2020/run-latest.json | 61 + .../ronin-mainnet/RNSDomainPriceLogic.json | 20044 +++++++++------- 4 files changed, 11747 insertions(+), 8451 deletions(-) create mode 100644 broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-1710239642.json create mode 100644 broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-1710239649.json create mode 100644 broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-latest.json diff --git a/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-1710239642.json b/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-1710239642.json new file mode 100644 index 00000000..66c62024 --- /dev/null +++ b/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-1710239642.json @@ -0,0 +1,32 @@ +{ + "transactions": [ + { + "hash": "0xe286552ba7e4933e2860440f3fa51763376b0a2aa9974ec8852edd750989b17a", + "transactionType": "CREATE", + "contractName": "RNSDomainPrice", + "contractAddress": "0x482Dd60f3b8D961Ba4629D6b2eCc0B24329746D0", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x08295771719b138a241f45023b13cc868d72827d", + "gas": "0x5bf574", + "value": "0x0", + "data": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61351380620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", + "nonce": "0x8" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0xe286552ba7e4933e2860440f3fa51763376b0a2aa9974ec8852edd750989b17a" + ], + "returns": {}, + "timestamp": 1710239642, + "chain": 2020, + "multi": false, + "commit": "112ebf2" +} \ No newline at end of file diff --git a/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-1710239649.json b/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-1710239649.json new file mode 100644 index 00000000..ea28b4b0 --- /dev/null +++ b/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-1710239649.json @@ -0,0 +1,61 @@ +{ + "transactions": [ + { + "hash": "0xe286552ba7e4933e2860440f3fa51763376b0a2aa9974ec8852edd750989b17a", + "transactionType": "CREATE", + "contractName": "RNSDomainPrice", + "contractAddress": "0x482Dd60f3b8D961Ba4629D6b2eCc0B24329746D0", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x08295771719b138a241f45023b13cc868d72827d", + "gas": "0x5bf574", + "value": "0x0", + "data": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61351380620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", + "nonce": "0x8" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xe286552ba7e4933e2860440f3fa51763376b0a2aa9974ec8852edd750989b17a", + "transactionIndex": "0x8", + "blockHash": "0x8619bf3c8df03dc44bc4d277a3f667f30100d0b7c3348fe4564f0dd60ec908af", + "blockNumber": "0x1f48a77", + "from": "0x08295771719b138a241F45023B13CC868D72827D", + "to": null, + "cumulativeGasUsed": "0x35bc86", + "gasUsed": "0x2dfaba", + "contractAddress": "0x482Dd60f3b8D961Ba4629D6b2eCc0B24329746D0", + "logs": [ + { + "address": "0x482Dd60f3b8D961Ba4629D6b2eCc0B24329746D0", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x8619bf3c8df03dc44bc4d277a3f667f30100d0b7c3348fe4564f0dd60ec908af", + "blockNumber": "0x1f48a77", + "transactionHash": "0xe286552ba7e4933e2860440f3fa51763376b0a2aa9974ec8852edd750989b17a", + "transactionIndex": "0x8", + "logIndex": "0xb", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "effectiveGasPrice": "0x4a817c800" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1710239649, + "chain": 2020, + "multi": false, + "commit": "112ebf2" +} \ No newline at end of file diff --git a/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-latest.json b/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-latest.json new file mode 100644 index 00000000..ea28b4b0 --- /dev/null +++ b/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2020/run-latest.json @@ -0,0 +1,61 @@ +{ + "transactions": [ + { + "hash": "0xe286552ba7e4933e2860440f3fa51763376b0a2aa9974ec8852edd750989b17a", + "transactionType": "CREATE", + "contractName": "RNSDomainPrice", + "contractAddress": "0x482Dd60f3b8D961Ba4629D6b2eCc0B24329746D0", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x08295771719b138a241f45023b13cc868d72827d", + "gas": "0x5bf574", + "value": "0x0", + "data": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61351380620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", + "nonce": "0x8" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xe286552ba7e4933e2860440f3fa51763376b0a2aa9974ec8852edd750989b17a", + "transactionIndex": "0x8", + "blockHash": "0x8619bf3c8df03dc44bc4d277a3f667f30100d0b7c3348fe4564f0dd60ec908af", + "blockNumber": "0x1f48a77", + "from": "0x08295771719b138a241F45023B13CC868D72827D", + "to": null, + "cumulativeGasUsed": "0x35bc86", + "gasUsed": "0x2dfaba", + "contractAddress": "0x482Dd60f3b8D961Ba4629D6b2eCc0B24329746D0", + "logs": [ + { + "address": "0x482Dd60f3b8D961Ba4629D6b2eCc0B24329746D0", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0x8619bf3c8df03dc44bc4d277a3f667f30100d0b7c3348fe4564f0dd60ec908af", + "blockNumber": "0x1f48a77", + "transactionHash": "0xe286552ba7e4933e2860440f3fa51763376b0a2aa9974ec8852edd750989b17a", + "transactionIndex": "0x8", + "logIndex": "0xb", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "effectiveGasPrice": "0x4a817c800" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1710239649, + "chain": 2020, + "multi": false, + "commit": "112ebf2" +} \ No newline at end of file diff --git a/deployments/ronin-mainnet/RNSDomainPriceLogic.json b/deployments/ronin-mainnet/RNSDomainPriceLogic.json index ce48f2bc..3e0eb6d5 100644 --- a/deployments/ronin-mainnet/RNSDomainPriceLogic.json +++ b/deployments/ronin-mainnet/RNSDomainPriceLogic.json @@ -1,1114 +1,1200 @@ { "abi": [ { + "type": "constructor", "inputs": [], - "stateMutability": "payable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "int32", - "name": "expo1", - "type": "int32" - }, - { - "internalType": "int32", - "name": "expo2", - "type": "int32" - }, - { - "internalType": "int64", - "name": "price1", - "type": "int64" - } - ], - "name": "ErrComputedPriceTooLarge", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "int32", - "name": "expo", - "type": "int32" - } - ], - "name": "ErrExponentTooLarge", - "type": "error" - }, - { - "inputs": [], - "name": "ExceedAuctionDomainExpiry", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidArrayLength", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "n", - "type": "uint256" - } - ], - "name": "PeriodNumOverflowedUint16", - "type": "error" + "stateMutability": "payable" }, { + "type": "function", + "name": "DEFAULT_ADMIN_ROLE", "inputs": [], - "name": "RenewalFeeIsNotOverriden", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint192", - "name": "ratio", - "type": "uint192" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "period", - "type": "uint64" - } - ], - "name": "DomainPriceScaleRuleUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "labelHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "proofHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "setType", - "type": "uint256" - } - ], - "name": "DomainPriceUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "maxLength", - "type": "uint256" - } - ], - "name": "MaxRenewalFeeLengthUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract IPyth", - "name": "pyth", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "maxAcceptableAge", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "pythIdForRONUSD", - "type": "bytes32" - } - ], - "name": "PythOracleConfigUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "labelLength", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "renewalFee", - "type": "uint256" - } - ], - "name": "RenewalFeeByLengthUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "labelHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "inverseRenewalFee", - "type": "uint256" - } - ], - "name": "RenewalFeeOverridingUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, + "outputs": [ { - "indexed": true, - "internalType": "uint256", - "name": "ratio", - "type": "uint256" + "name": "", + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "TaxRatioUpdated", - "type": "event" + "stateMutability": "view" }, { + "type": "function", + "name": "MAX_PERCENTAGE", "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { - "internalType": "bytes32", "name": "", - "type": "bytes32" + "type": "uint64", + "internalType": "uint64" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "OPERATOR_ROLE", "inputs": [], - "name": "MAX_PERCENTAGE", "outputs": [ { - "internalType": "uint64", "name": "", - "type": "uint64" + "type": "bytes32", + "internalType": "bytes32" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "OVERRIDER_ROLE", "inputs": [], - "name": "OPERATOR_ROLE", "outputs": [ { - "internalType": "bytes32", "name": "", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "USD_DECIMALS", "inputs": [], - "name": "OVERRIDER_ROLE", "outputs": [ { - "internalType": "bytes32", "name": "", - "type": "bytes32" + "type": "uint8", + "internalType": "uint8" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], - "name": "USD_DECIMALS", - "outputs": [ + "type": "function", + "name": "bulkOverrideRenewalFees", + "inputs": [ { - "internalType": "uint8", - "name": "", - "type": "uint8" + "name": "lbHashes", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "usdPrices", + "type": "uint256[]", + "internalType": "uint256[]" } ], - "stateMutability": "view", - "type": "function" + "outputs": [], + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "bulkOverrideTiers", "inputs": [ { - "internalType": "bytes32[]", "name": "lbHashes", - "type": "bytes32[]" + "type": "bytes32[]", + "internalType": "bytes32[]" }, { - "internalType": "uint256[]", - "name": "usdPrices", - "type": "uint256[]" + "name": "tiers", + "type": "uint8[]", + "internalType": "enum INSDomainPrice.Tier[]" } ], - "name": "bulkOverrideRenewalFees", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "bulkSetDomainPrice", "inputs": [ { - "internalType": "bytes32[]", "name": "lbHashes", - "type": "bytes32[]" + "type": "bytes32[]", + "internalType": "bytes32[]" }, { - "internalType": "uint256[]", "name": "ronPrices", - "type": "uint256[]" + "type": "uint256[]", + "internalType": "uint256[]" }, { - "internalType": "bytes32[]", "name": "proofHashes", - "type": "bytes32[]" + "type": "bytes32[]", + "internalType": "bytes32[]" }, { - "internalType": "uint256[]", "name": "setTypes", - "type": "uint256[]" + "type": "uint256[]", + "internalType": "uint256[]" } ], - "name": "bulkSetDomainPrice", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "bulkTrySetDomainPrice", "inputs": [ { - "internalType": "bytes32[]", "name": "lbHashes", - "type": "bytes32[]" + "type": "bytes32[]", + "internalType": "bytes32[]" }, { - "internalType": "uint256[]", "name": "ronPrices", - "type": "uint256[]" + "type": "uint256[]", + "internalType": "uint256[]" }, { - "internalType": "bytes32[]", "name": "proofHashes", - "type": "bytes32[]" + "type": "bytes32[]", + "internalType": "bytes32[]" }, { - "internalType": "uint256[]", "name": "setTypes", - "type": "uint256[]" + "type": "uint256[]", + "internalType": "uint256[]" } ], - "name": "bulkTrySetDomainPrice", "outputs": [ { - "internalType": "bool[]", "name": "updated", - "type": "bool[]" + "type": "bool[]", + "internalType": "bool[]" } ], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "convertRONToUSD", "inputs": [ { - "internalType": "uint256", "name": "ronWei", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "name": "convertRONToUSD", "outputs": [ { - "internalType": "uint256", "name": "usdWei", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "convertUSDToRON", "inputs": [ { - "internalType": "uint256", "name": "usdWei", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "name": "convertUSDToRON", "outputs": [ { - "internalType": "uint256", "name": "ronWei", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "getDomainPrice", "inputs": [ { - "internalType": "string", "name": "label", - "type": "string" + "type": "string", + "internalType": "string" } ], - "name": "getDomainPrice", "outputs": [ { - "internalType": "uint256", "name": "usdPrice", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "uint256", "name": "ronPrice", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "getOverriddenRenewalFee", "inputs": [ { - "internalType": "string", "name": "label", - "type": "string" + "type": "string", + "internalType": "string" } ], - "name": "getOverriddenRenewalFee", "outputs": [ { - "internalType": "uint256", "name": "usdFee", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", + "name": "getOverriddenTier", + "inputs": [ + { + "name": "label", + "type": "string", + "internalType": "string" + } + ], + "outputs": [ + { + "name": "tier", + "type": "uint8", + "internalType": "enum INSDomainPrice.Tier" + } + ], + "stateMutability": "view" + }, + { + "type": "function", "name": "getPythOracleConfig", + "inputs": [], "outputs": [ { - "internalType": "contract IPyth", "name": "pyth", - "type": "address" + "type": "address", + "internalType": "contract IPyth" }, { - "internalType": "uint256", "name": "maxAcceptableAge", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "bytes32", "name": "pythIdForRONUSD", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "getRenewalFee", "inputs": [ { - "internalType": "string", "name": "label", - "type": "string" + "type": "string", + "internalType": "string" }, { - "internalType": "uint256", "name": "duration", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "name": "getRenewalFee", "outputs": [ { + "name": "basePrice", + "type": "tuple", + "internalType": "struct INSDomainPrice.UnitPrice", "components": [ { - "internalType": "uint256", "name": "usd", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "uint256", "name": "ron", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } - ], - "internalType": "struct INSDomainPrice.UnitPrice", - "name": "basePrice", - "type": "tuple" + ] }, { + "name": "tax", + "type": "tuple", + "internalType": "struct INSDomainPrice.UnitPrice", "components": [ { - "internalType": "uint256", "name": "usd", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "uint256", "name": "ron", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } - ], - "internalType": "struct INSDomainPrice.UnitPrice", - "name": "tax", - "type": "tuple" + ] } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "getRenewalFeeByLengths", + "inputs": [], "outputs": [ { + "name": "renewalFees", + "type": "tuple[]", + "internalType": "struct INSDomainPrice.RenewalFee[]", "components": [ { - "internalType": "uint256", "name": "labelLength", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "uint256", "name": "fee", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } - ], - "internalType": "struct INSDomainPrice.RenewalFee[]", - "name": "renewalFees", - "type": "tuple[]" + ] } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "getRoleAdmin", "inputs": [ { - "internalType": "bytes32", "name": "role", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "getRoleAdmin", "outputs": [ { - "internalType": "bytes32", "name": "", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "getRoleMember", "inputs": [ { - "internalType": "bytes32", "name": "role", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" }, { - "internalType": "uint256", "name": "index", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "name": "getRoleMember", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "getRoleMemberCount", "inputs": [ { - "internalType": "bytes32", "name": "role", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "getRoleMemberCount", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "getScaleDownRuleForDomainPrice", + "inputs": [], "outputs": [ { + "name": "scaleRule", + "type": "tuple", + "internalType": "struct PeriodScaler", "components": [ { - "internalType": "uint192", "name": "ratio", - "type": "uint192" + "type": "uint192", + "internalType": "uint192" }, { - "internalType": "uint64", "name": "period", - "type": "uint64" + "type": "uint64", + "internalType": "uint64" } - ], - "internalType": "struct PeriodScaler", - "name": "scaleRule", - "type": "tuple" + ] } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "getTaxRatio", + "inputs": [], "outputs": [ { - "internalType": "uint256", "name": "ratio", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTier", + "inputs": [ + { + "name": "label", + "type": "string", + "internalType": "string" + } + ], + "outputs": [ + { + "name": "tier", + "type": "uint8", + "internalType": "enum INSDomainPrice.Tier" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "grantRole", "inputs": [ { - "internalType": "bytes32", "name": "role", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" }, { - "internalType": "address", "name": "account", - "type": "address" + "type": "address", + "internalType": "address" } ], - "name": "grantRole", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "hasRole", "inputs": [ { - "internalType": "bytes32", "name": "role", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" }, { - "internalType": "address", "name": "account", - "type": "address" + "type": "address", + "internalType": "address" } ], - "name": "hasRole", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "bool", + "internalType": "bool" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "initialize", "inputs": [ { - "internalType": "address", "name": "admin", - "type": "address" + "type": "address", + "internalType": "address" }, { - "internalType": "address[]", "name": "operators", - "type": "address[]" + "type": "address[]", + "internalType": "address[]" }, { + "name": "renewalFees", + "type": "tuple[]", + "internalType": "struct INSDomainPrice.RenewalFee[]", "components": [ { - "internalType": "uint256", "name": "labelLength", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "uint256", "name": "fee", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } - ], - "internalType": "struct INSDomainPrice.RenewalFee[]", - "name": "renewalFees", - "type": "tuple[]" + ] }, { - "internalType": "uint256", "name": "taxRatio", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { + "name": "domainPriceScaleRule", + "type": "tuple", + "internalType": "struct PeriodScaler", "components": [ { - "internalType": "uint192", "name": "ratio", - "type": "uint192" + "type": "uint192", + "internalType": "uint192" }, { - "internalType": "uint64", "name": "period", - "type": "uint64" + "type": "uint64", + "internalType": "uint64" } - ], - "internalType": "struct PeriodScaler", - "name": "domainPriceScaleRule", - "type": "tuple" + ] }, { - "internalType": "contract IPyth", "name": "pyth", - "type": "address" + "type": "address", + "internalType": "contract IPyth" }, { - "internalType": "contract INSAuction", "name": "auction", - "type": "address" + "type": "address", + "internalType": "contract INSAuction" }, { - "internalType": "uint256", "name": "maxAcceptableAge", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "bytes32", "name": "pythIdForRONUSD", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "initialize", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "renounceRole", "inputs": [ { - "internalType": "bytes32", "name": "role", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" }, { - "internalType": "address", "name": "account", - "type": "address" + "type": "address", + "internalType": "address" } ], - "name": "renounceRole", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "revokeRole", "inputs": [ { - "internalType": "bytes32", "name": "role", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" }, { - "internalType": "address", "name": "account", - "type": "address" + "type": "address", + "internalType": "address" } ], - "name": "revokeRole", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "setPythOracleConfig", "inputs": [ { - "internalType": "contract IPyth", "name": "pyth", - "type": "address" + "type": "address", + "internalType": "contract IPyth" }, { - "internalType": "uint256", "name": "maxAcceptableAge", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "bytes32", "name": "pythIdForRONUSD", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "setPythOracleConfig", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "setRenewalFeeByLengths", "inputs": [ { + "name": "renewalFees", + "type": "tuple[]", + "internalType": "struct INSDomainPrice.RenewalFee[]", "components": [ { - "internalType": "uint256", "name": "labelLength", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "uint256", "name": "fee", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } - ], - "internalType": "struct INSDomainPrice.RenewalFee[]", - "name": "renewalFees", - "type": "tuple[]" + ] } ], - "name": "setRenewalFeeByLengths", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "setScaleDownRuleForDomainPrice", "inputs": [ { + "name": "scaleRule", + "type": "tuple", + "internalType": "struct PeriodScaler", "components": [ { - "internalType": "uint192", "name": "ratio", - "type": "uint192" + "type": "uint192", + "internalType": "uint192" }, { - "internalType": "uint64", "name": "period", - "type": "uint64" + "type": "uint64", + "internalType": "uint64" } - ], - "internalType": "struct PeriodScaler", - "name": "scaleRule", - "type": "tuple" + ] } ], - "name": "setScaleDownRuleForDomainPrice", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "setTaxRatio", "inputs": [ { - "internalType": "uint256", "name": "ratio", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "name": "setTaxRatio", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "supportsInterface", "inputs": [ { - "internalType": "bytes4", "name": "interfaceId", - "type": "bytes4" + "type": "bytes4", + "internalType": "bytes4" } ], - "name": "supportsInterface", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "bool", + "internalType": "bool" } ], - "stateMutability": "view", - "type": "function" - } - ], - "address": "0x2f8c5E6BbE526d0C88979269F2B249271491717c", - "args": "0x", - "ast": { - "absolutePath": "src/RNSDomainPrice.sol", - "id": 62752, - "exportedSymbols": { - "AccessControlEnumerable": [ - 48975 - ], - "INSAuction": [ - 66400 - ], - "INSDomainPrice": [ - 66670 - ], - "INSUnified": [ - 67046 - ], - "IPyth": [ - 54844 - ], - "Initializable": [ - 50248 - ], - "LibPeriodScaler": [ - 68759 - ], - "LibRNSDomain": [ - 68113 + "stateMutability": "view" + }, + { + "type": "event", + "name": "DomainPriceScaleRuleUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "ratio", + "type": "uint192", + "indexed": false, + "internalType": "uint192" + }, + { + "name": "period", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } ], - "LibSafeRange": [ - 68657 + "anonymous": false + }, + { + "type": "event", + "name": "DomainPriceUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "labelHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "price", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "proofHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "setType", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } ], - "LibString": [ - 68395 + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } ], - "Math": [ - 53557 + "anonymous": false + }, + { + "type": "event", + "name": "MaxRenewalFeeLengthUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "maxLength", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } ], - "PeriodScaler": [ - 68668 + "anonymous": false + }, + { + "type": "event", + "name": "PythOracleConfigUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "pyth", + "type": "address", + "indexed": true, + "internalType": "contract IPyth" + }, + { + "name": "maxAcceptableAge", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "pythIdForRONUSD", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } ], - "PythConverter": [ - 69448 + "anonymous": false + }, + { + "type": "event", + "name": "RenewalFeeByLengthUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "labelLength", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "renewalFee", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } ], - "PythStructs": [ - 54887 + "anonymous": false + }, + { + "type": "event", + "name": "RenewalFeeOverridingUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "labelHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "inverseRenewalFee", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } ], - "RNSDomainPrice": [ - 62751 + "anonymous": false + }, + { + "type": "event", + "name": "RoleAdminChanged", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "previousAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "newAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } ], - "TimestampWrapper": [ - 68591 - ] + "anonymous": false }, - "nodeType": "SourceUnit", - "src": "32:13153:95", - "nodes": [ - { - "id": 61579, - "nodeType": "PragmaDirective", - "src": "32:24:95", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", + { + "type": "event", + "name": "RoleGranted", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleRevoked", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TaxRatioUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "ratio", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TierOverridingUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "labelHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "tier", + "type": "uint8", + "indexed": true, + "internalType": "enum INSDomainPrice.Tier" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "ErrComputedPriceTooLarge", + "inputs": [ + { + "name": "expo1", + "type": "int32", + "internalType": "int32" + }, + { + "name": "expo2", + "type": "int32", + "internalType": "int32" + }, + { + "name": "price1", + "type": "int64", + "internalType": "int64" + } + ] + }, + { + "type": "error", + "name": "ErrExponentTooLarge", + "inputs": [ + { + "name": "expo", + "type": "int32", + "internalType": "int32" + } + ] + }, + { + "type": "error", + "name": "ExceedAuctionDomainExpiry", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidArrayLength", + "inputs": [] + }, + { + "type": "error", + "name": "PeriodNumOverflowedUint16", + "inputs": [ + { + "name": "n", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "RenewalFeeIsNotOverriden", + "inputs": [] + }, + { + "type": "error", + "name": "TierIsNotOverriden", + "inputs": [] + } + ], + "address": "0x482Dd60f3b8D961Ba4629D6b2eCc0B24329746D0", + "args": "0x", + "ast": { + "absolutePath": "src/RNSDomainPrice.sol", + "id": 119627, + "exportedSymbols": { + "AccessControlEnumerable": [ + 100251 + ], + "INSAuction": [ + 123292 + ], + "INSDomainPrice": [ + 123609 + ], + "INSUnified": [ + 123985 + ], + "IPyth": [ + 106120 + ], + "Initializable": [ + 101524 + ], + "LibPeriodScaler": [ + 125698 + ], + "LibRNSDomain": [ + 125052 + ], + "LibSafeRange": [ + 125596 + ], + "LibString": [ + 125334 + ], + "Math": [ + 104833 + ], + "PeriodScaler": [ + 125607 + ], + "PythConverter": [ + 126387 + ], + "PythStructs": [ + 106163 + ], + "RNSDomainPrice": [ + 119626 + ], + "TimestampWrapper": [ + 125530 + ] + }, + "nodeType": "SourceUnit", + "src": "32:16050:163", + "nodes": [ + { + "id": 118219, + "nodeType": "PragmaDirective", + "src": "32:24:163", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", ".19" ] }, { - "id": 61581, + "id": 118221, "nodeType": "ImportDirective", - "src": "58:86:95", + "src": "58:86:163", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", "file": "@openzeppelin/contracts/proxy/utils/Initializable.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 50249, + "scope": 119627, + "sourceUnit": 101525, "symbolAliases": [ { "foreign": { - "id": 61580, + "id": 118220, "name": "Initializable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50248, - "src": "67:13:95", + "referencedDeclaration": 101524, + "src": "67:13:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1117,24 +1203,24 @@ "unitAlias": "" }, { - "id": 61583, + "id": 118223, "nodeType": "ImportDirective", - "src": "145:101:95", + "src": "145:101:163", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol", "file": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 48976, + "scope": 119627, + "sourceUnit": 100252, "symbolAliases": [ { "foreign": { - "id": 61582, + "id": 118222, "name": "AccessControlEnumerable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48975, - "src": "154:23:95", + "referencedDeclaration": 100251, + "src": "154:23:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1143,24 +1229,24 @@ "unitAlias": "" }, { - "id": 61585, + "id": 118225, "nodeType": "ImportDirective", - "src": "247:67:95", + "src": "247:67:163", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/Math.sol", "file": "@openzeppelin/contracts/utils/math/Math.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 53558, + "scope": 119627, + "sourceUnit": 104834, "symbolAliases": [ { "foreign": { - "id": 61584, + "id": 118224, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 53557, - "src": "256:4:95", + "referencedDeclaration": 104833, + "src": "256:4:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1169,36 +1255,36 @@ "unitAlias": "" }, { - "id": 61588, + "id": 118228, "nodeType": "ImportDirective", - "src": "315:60:95", + "src": "315:60:163", "nodes": [], "absolutePath": "lib/pyth-sdk-solidity/IPyth.sol", "file": "@pythnetwork/IPyth.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 54845, + "scope": 119627, + "sourceUnit": 106121, "symbolAliases": [ { "foreign": { - "id": 61586, + "id": 118226, "name": "IPyth", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 54844, - "src": "324:5:95", + "referencedDeclaration": 106120, + "src": "324:5:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 61587, + "id": 118227, "name": "PythStructs", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 54887, - "src": "331:11:95", + "referencedDeclaration": 106163, + "src": "331:11:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1207,24 +1293,24 @@ "unitAlias": "" }, { - "id": 61590, + "id": 118230, "nodeType": "ImportDirective", - "src": "376:57:95", + "src": "376:57:163", "nodes": [], "absolutePath": "src/interfaces/INSUnified.sol", "file": "./interfaces/INSUnified.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 67047, + "scope": 119627, + "sourceUnit": 123986, "symbolAliases": [ { "foreign": { - "id": 61589, + "id": 118229, "name": "INSUnified", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67046, - "src": "385:10:95", + "referencedDeclaration": 123985, + "src": "385:10:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1233,24 +1319,24 @@ "unitAlias": "" }, { - "id": 61592, + "id": 118232, "nodeType": "ImportDirective", - "src": "434:57:95", + "src": "434:57:163", "nodes": [], "absolutePath": "src/interfaces/INSAuction.sol", "file": "./interfaces/INSAuction.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 66401, + "scope": 119627, + "sourceUnit": 123293, "symbolAliases": [ { "foreign": { - "id": 61591, + "id": 118231, "name": "INSAuction", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 66400, - "src": "443:10:95", + "referencedDeclaration": 123292, + "src": "443:10:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1259,24 +1345,24 @@ "unitAlias": "" }, { - "id": 61594, + "id": 118234, "nodeType": "ImportDirective", - "src": "492:65:95", + "src": "492:65:163", "nodes": [], "absolutePath": "src/interfaces/INSDomainPrice.sol", "file": "./interfaces/INSDomainPrice.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 66671, + "scope": 119627, + "sourceUnit": 123610, "symbolAliases": [ { "foreign": { - "id": 61593, + "id": 118233, "name": "INSDomainPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 66670, - "src": "501:14:95", + "referencedDeclaration": 123609, + "src": "501:14:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1285,48 +1371,48 @@ "unitAlias": "" }, { - "id": 61598, + "id": 118238, "nodeType": "ImportDirective", - "src": "558:94:95", + "src": "558:94:163", "nodes": [], "absolutePath": "src/libraries/math/PeriodScalingUtils.sol", "file": "./libraries/math/PeriodScalingUtils.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 68760, + "scope": 119627, + "sourceUnit": 125699, "symbolAliases": [ { "foreign": { - "id": 61595, + "id": 118235, "name": "PeriodScaler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68668, - "src": "567:12:95", + "referencedDeclaration": 125607, + "src": "567:12:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 61596, + "id": 118236, "name": "LibPeriodScaler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68759, - "src": "581:15:95", + "referencedDeclaration": 125698, + "src": "581:15:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }, { "foreign": { - "id": 61597, + "id": 118237, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 53557, - "src": "598:4:95", + "referencedDeclaration": 104833, + "src": "598:4:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1335,24 +1421,24 @@ "unitAlias": "" }, { - "id": 61600, + "id": 118240, "nodeType": "ImportDirective", - "src": "653:73:95", + "src": "653:73:163", "nodes": [], "absolutePath": "src/libraries/TimestampWrapperUtils.sol", "file": "./libraries/TimestampWrapperUtils.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 68592, + "scope": 119627, + "sourceUnit": 125531, "symbolAliases": [ { "foreign": { - "id": 61599, + "id": 118239, "name": "TimestampWrapper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68591, - "src": "662:16:95", + "referencedDeclaration": 125530, + "src": "662:16:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1361,24 +1447,24 @@ "unitAlias": "" }, { - "id": 61602, + "id": 118242, "nodeType": "ImportDirective", - "src": "727:65:95", + "src": "727:65:163", "nodes": [], "absolutePath": "src/libraries/math/LibSafeRange.sol", "file": "./libraries/math/LibSafeRange.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 68658, + "scope": 119627, + "sourceUnit": 125597, "symbolAliases": [ { "foreign": { - "id": 61601, + "id": 118241, "name": "LibSafeRange", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68657, - "src": "736:12:95", + "referencedDeclaration": 125596, + "src": "736:12:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1387,24 +1473,24 @@ "unitAlias": "" }, { - "id": 61604, + "id": 118244, "nodeType": "ImportDirective", - "src": "793:54:95", + "src": "793:54:163", "nodes": [], "absolutePath": "src/libraries/LibString.sol", "file": "./libraries/LibString.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 68396, + "scope": 119627, + "sourceUnit": 125335, "symbolAliases": [ { "foreign": { - "id": 61603, + "id": 118243, "name": "LibString", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68395, - "src": "802:9:95", + "referencedDeclaration": 125334, + "src": "802:9:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1413,24 +1499,24 @@ "unitAlias": "" }, { - "id": 61606, + "id": 118246, "nodeType": "ImportDirective", - "src": "848:60:95", + "src": "848:60:163", "nodes": [], "absolutePath": "src/libraries/LibRNSDomain.sol", "file": "./libraries/LibRNSDomain.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 68114, + "scope": 119627, + "sourceUnit": 125053, "symbolAliases": [ { "foreign": { - "id": 61605, + "id": 118245, "name": "LibRNSDomain", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 68113, - "src": "857:12:95", + "referencedDeclaration": 125052, + "src": "857:12:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1439,24 +1525,24 @@ "unitAlias": "" }, { - "id": 61608, + "id": 118248, "nodeType": "ImportDirective", - "src": "909:67:95", + "src": "909:67:163", "nodes": [], "absolutePath": "src/libraries/pyth/PythConverter.sol", "file": "./libraries/pyth/PythConverter.sol", "nameLocation": "-1:-1:-1", - "scope": 62752, - "sourceUnit": 69449, + "scope": 119627, + "sourceUnit": 126388, "symbolAliases": [ { "foreign": { - "id": 61607, + "id": 118247, "name": "PythConverter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69448, - "src": "918:13:95", + "referencedDeclaration": 126387, + "src": "918:13:163", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1465,48 +1551,48 @@ "unitAlias": "" }, { - "id": 62751, + "id": 119626, "nodeType": "ContractDefinition", - "src": "978:12206:95", + "src": "978:15103:163", "nodes": [ { - "id": 61616, + "id": 118256, "nodeType": "UsingForDirective", - "src": "1064:22:95", + "src": "1064:22:163", "nodes": [], "global": false, "libraryName": { - "id": 61615, + "id": 118255, "name": "LibString", "nameLocations": [ - "1070:9:95" + "1070:9:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68395, - "src": "1070:9:95" + "referencedDeclaration": 125334, + "src": "1070:9:163" } }, { - "id": 61619, + "id": 118259, "nodeType": "UsingForDirective", - "src": "1089:30:95", + "src": "1089:30:163", "nodes": [], "global": false, "libraryName": { - "id": 61617, + "id": 118257, "name": "LibRNSDomain", "nameLocations": [ - "1095:12:95" + "1095:12:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68113, - "src": "1095:12:95" + "referencedDeclaration": 125052, + "src": "1095:12:163" }, "typeName": { - "id": 61618, + "id": 118258, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1112:6:95", + "src": "1112:6:163", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1514,100 +1600,200 @@ } }, { - "id": 61623, + "id": 118263, "nodeType": "UsingForDirective", - "src": "1122:39:95", + "src": "1122:39:163", "nodes": [], "global": false, "libraryName": { - "id": 61620, + "id": 118260, "name": "LibPeriodScaler", "nameLocations": [ - "1128:15:95" + "1128:15:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68759, - "src": "1128:15:95" + "referencedDeclaration": 125698, + "src": "1128:15:163" }, "typeName": { - "id": 61622, + "id": 118262, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61621, + "id": 118261, "name": "PeriodScaler", "nameLocations": [ - "1148:12:95" + "1148:12:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68668, - "src": "1148:12:95" + "referencedDeclaration": 125607, + "src": "1148:12:163" }, - "referencedDeclaration": 68668, - "src": "1148:12:95", + "referencedDeclaration": 125607, + "src": "1148:12:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_storage_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", "typeString": "struct PeriodScaler" } } }, { - "id": 61627, + "id": 118267, "nodeType": "UsingForDirective", - "src": "1164:42:95", + "src": "1164:42:163", "nodes": [], "global": false, "libraryName": { - "id": 61624, + "id": 118264, "name": "PythConverter", "nameLocations": [ - "1170:13:95" + "1170:13:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 69448, - "src": "1170:13:95" + "referencedDeclaration": 126387, + "src": "1170:13:163" }, "typeName": { - "id": 61626, + "id": 118266, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61625, + "id": 118265, "name": "PythStructs.Price", "nameLocations": [ - "1188:11:95", - "1200:5:95" + "1188:11:163", + "1200:5:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 54877, - "src": "1188:17:95" + "referencedDeclaration": 106153, + "src": "1188:17:163" }, - "referencedDeclaration": 54877, - "src": "1188:17:95", + "referencedDeclaration": 106153, + "src": "1188:17:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$54877_storage_ptr", + "typeIdentifier": "t_struct$_Price_$106153_storage_ptr", "typeString": "struct PythStructs.Price" } } }, { - "id": 61631, + "id": 118271, + "nodeType": "VariableDeclaration", + "src": "1274:64:163", + "nodes": [], + "constant": true, + "documentation": { + "id": 118268, + "nodeType": "StructuredDocumentation", + "src": "1210:61:163", + "text": "@dev The threshold tier value (in USD) for Tier 1: > $200" + }, + "mutability": "constant", + "name": "TIER_1_FROM_EXCLUDED_THRESHOLD", + "nameLocation": "1299:30:163", + "scope": 119626, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 118269, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1274:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "323030653138", + "id": 118270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1332:6:163", + "typeDescriptions": { + "typeIdentifier": "t_rational_200000000000000000000_by_1", + "typeString": "int_const 200000000000000000000" + }, + "value": "200e18" + }, + "visibility": "private" + }, + { + "id": 118275, + "nodeType": "VariableDeclaration", + "src": "1422:63:163", + "nodes": [], + "constant": true, + "documentation": { + "id": 118272, + "nodeType": "StructuredDocumentation", + "src": "1342:77:163", + "text": "@dev The threshold tier value (in USD) for Tier 2 in range of ($50; $200]" + }, + "mutability": "constant", + "name": "TIER_2_FROM_EXCLUDED_THRESHOLD", + "nameLocation": "1447:30:163", + "scope": 119626, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 118273, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1422:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3530653138", + "id": 118274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1480:5:163", + "typeDescriptions": { + "typeIdentifier": "t_rational_50000000000000000000_by_1", + "typeString": "int_const 50000000000000000000" + }, + "value": "50e18" + }, + "visibility": "private" + }, + { + "id": 118279, "nodeType": "VariableDeclaration", - "src": "1243:39:95", + "src": "1522:39:163", "nodes": [], "baseFunctions": [ - 66669 + 123608 ], "constant": true, "documentation": { - "id": 61628, + "id": 118276, "nodeType": "StructuredDocumentation", - "src": "1210:30:95", + "src": "1489:30:163", "text": "@inheritdoc INSDomainPrice" }, "functionSelector": "2f6ee695", "mutability": "constant", "name": "USD_DECIMALS", - "nameLocation": "1265:12:95", - "scope": 62751, + "nameLocation": "1544:12:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1615,10 +1801,10 @@ "typeString": "uint8" }, "typeName": { - "id": 61629, + "id": 118277, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1243:5:95", + "src": "1522:5:163", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1626,14 +1812,14 @@ }, "value": { "hexValue": "3138", - "id": 61630, + "id": 118278, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1280:2:95", + "src": "1559:2:163", "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" @@ -1643,25 +1829,25 @@ "visibility": "public" }, { - "id": 61635, + "id": 118283, "nodeType": "VariableDeclaration", - "src": "1319:46:95", + "src": "1598:46:163", "nodes": [], "baseFunctions": [ - 66663 + 123602 ], "constant": true, "documentation": { - "id": 61632, + "id": 118280, "nodeType": "StructuredDocumentation", - "src": "1286:30:95", + "src": "1565:30:163", "text": "@inheritdoc INSDomainPrice" }, "functionSelector": "4c255c97", "mutability": "constant", "name": "MAX_PERCENTAGE", - "nameLocation": "1342:14:95", - "scope": 62751, + "nameLocation": "1621:14:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1669,10 +1855,10 @@ "typeString": "uint64" }, "typeName": { - "id": 61633, + "id": 118281, "name": "uint64", "nodeType": "ElementaryTypeName", - "src": "1319:6:95", + "src": "1598:6:163", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" @@ -1680,14 +1866,14 @@ }, "value": { "hexValue": "3130305f3030", - "id": 61634, + "id": 118282, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1359:6:95", + "src": "1638:6:163", "typeDescriptions": { "typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000" @@ -1697,25 +1883,25 @@ "visibility": "public" }, { - "id": 61641, + "id": 118289, "nodeType": "VariableDeclaration", - "src": "1402:66:95", + "src": "1681:66:163", "nodes": [], "baseFunctions": [ - 66651 + 123590 ], "constant": true, "documentation": { - "id": 61636, + "id": 118284, "nodeType": "StructuredDocumentation", - "src": "1369:30:95", + "src": "1648:30:163", "text": "@inheritdoc INSDomainPrice" }, "functionSelector": "f5b541a6", "mutability": "constant", "name": "OPERATOR_ROLE", - "nameLocation": "1426:13:95", - "scope": 62751, + "nameLocation": "1705:13:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1723,10 +1909,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 61637, + "id": 118285, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1402:7:95", + "src": "1681:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1736,14 +1922,14 @@ "arguments": [ { "hexValue": "4f50455241544f525f524f4c45", - "id": 61639, + "id": 118287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1452:15:95", + "src": "1731:15:163", "typeDescriptions": { "typeIdentifier": "t_stringliteral_97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929", "typeString": "literal_string \"OPERATOR_ROLE\"" @@ -1758,18 +1944,18 @@ "typeString": "literal_string \"OPERATOR_ROLE\"" } ], - "id": 61638, + "id": 118286, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "1442:9:95", + "src": "1721:9:163", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 61640, + "id": 118288, "isConstant": false, "isLValue": false, "isPure": true, @@ -1778,7 +1964,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1442:26:95", + "src": "1721:26:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1788,25 +1974,25 @@ "visibility": "public" }, { - "id": 61647, + "id": 118295, "nodeType": "VariableDeclaration", - "src": "1505:68:95", + "src": "1784:68:163", "nodes": [], "baseFunctions": [ - 66657 + 123596 ], "constant": true, "documentation": { - "id": 61642, + "id": 118290, "nodeType": "StructuredDocumentation", - "src": "1472:30:95", + "src": "1751:30:163", "text": "@inheritdoc INSDomainPrice" }, "functionSelector": "700213c8", "mutability": "constant", "name": "OVERRIDER_ROLE", - "nameLocation": "1529:14:95", - "scope": 62751, + "nameLocation": "1808:14:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1814,10 +2000,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 61643, + "id": 118291, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1505:7:95", + "src": "1784:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1827,14 +2013,14 @@ "arguments": [ { "hexValue": "4f56455252494445525f524f4c45", - "id": 61645, + "id": 118293, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1556:16:95", + "src": "1835:16:163", "typeDescriptions": { "typeIdentifier": "t_stringliteral_033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fad", "typeString": "literal_string \"OVERRIDER_ROLE\"" @@ -1849,18 +2035,18 @@ "typeString": "literal_string \"OVERRIDER_ROLE\"" } ], - "id": 61644, + "id": 118292, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "1546:9:95", + "src": "1825:9:163", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 61646, + "id": 118294, "isConstant": false, "isLValue": false, "isPure": true, @@ -1869,7 +2055,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1546:27:95", + "src": "1825:27:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1879,21 +2065,21 @@ "visibility": "public" }, { - "id": 61652, + "id": 118300, "nodeType": "VariableDeclaration", - "src": "1613:27:95", + "src": "1892:27:163", "nodes": [], "constant": false, "documentation": { - "id": 61648, + "id": 118296, "nodeType": "StructuredDocumentation", - "src": "1578:32:95", + "src": "1857:32:163", "text": "@dev Gap for upgradeability." }, "mutability": "mutable", "name": "____gap", - "nameLocation": "1633:7:95", - "scope": 62751, + "nameLocation": "1912:7:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1902,26 +2088,26 @@ }, "typeName": { "baseType": { - "id": 61649, + "id": 118297, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1613:7:95", + "src": "1892:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 61651, + "id": 118299, "length": { "hexValue": "3530", - "id": 61650, + "id": 118298, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1621:2:95", + "src": "1900:2:163", "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" @@ -1929,7 +2115,7 @@ "value": "50" }, "nodeType": "ArrayTypeName", - "src": "1613:11:95", + "src": "1892:11:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", "typeString": "uint256[50]" @@ -1938,109 +2124,109 @@ "visibility": "private" }, { - "id": 61656, + "id": 118304, "nodeType": "VariableDeclaration", - "src": "1677:20:95", + "src": "1956:20:163", "nodes": [], "constant": false, "documentation": { - "id": 61653, + "id": 118301, "nodeType": "StructuredDocumentation", - "src": "1645:29:95", + "src": "1924:29:163", "text": "@dev Pyth oracle contract" }, "mutability": "mutable", "name": "_pyth", - "nameLocation": "1692:5:95", - "scope": 62751, + "nameLocation": "1971:5:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" }, "typeName": { - "id": 61655, + "id": 118303, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61654, + "id": 118302, "name": "IPyth", "nameLocations": [ - "1677:5:95" + "1956:5:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 54844, - "src": "1677:5:95" + "referencedDeclaration": 106120, + "src": "1956:5:163" }, - "referencedDeclaration": 54844, - "src": "1677:5:95", + "referencedDeclaration": 106120, + "src": "1956:5:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" } }, "visibility": "internal" }, { - "id": 61660, + "id": 118308, "nodeType": "VariableDeclaration", - "src": "1732:28:95", + "src": "2011:28:163", "nodes": [], "constant": false, "documentation": { - "id": 61657, + "id": 118305, "nodeType": "StructuredDocumentation", - "src": "1701:28:95", + "src": "1980:28:163", "text": "@dev RNSAuction contract" }, "mutability": "mutable", "name": "_auction", - "nameLocation": "1752:8:95", - "scope": 62751, + "nameLocation": "2031:8:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", + "typeIdentifier": "t_contract$_INSAuction_$123292", "typeString": "contract INSAuction" }, "typeName": { - "id": 61659, + "id": 118307, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61658, + "id": 118306, "name": "INSAuction", "nameLocations": [ - "1732:10:95" + "2011:10:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 66400, - "src": "1732:10:95" + "referencedDeclaration": 123292, + "src": "2011:10:163" }, - "referencedDeclaration": 66400, - "src": "1732:10:95", + "referencedDeclaration": 123292, + "src": "2011:10:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", + "typeIdentifier": "t_contract$_INSAuction_$123292", "typeString": "contract INSAuction" } }, "visibility": "internal" }, { - "id": 61663, + "id": 118311, "nodeType": "VariableDeclaration", - "src": "1833:26:95", + "src": "2112:26:163", "nodes": [], "constant": false, "documentation": { - "id": 61661, + "id": 118309, "nodeType": "StructuredDocumentation", - "src": "1764:66:95", + "src": "2043:66:163", "text": "@dev Extra fee for renewals based on the current domain price." }, "mutability": "mutable", "name": "_taxRatio", - "nameLocation": "1850:9:95", - "scope": 62751, + "nameLocation": "2129:9:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2048,10 +2234,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61662, + "id": 118310, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1833:7:95", + "src": "2112:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2060,21 +2246,21 @@ "visibility": "internal" }, { - "id": 61666, + "id": 118314, "nodeType": "VariableDeclaration", - "src": "1904:30:95", + "src": "2183:30:163", "nodes": [], "constant": false, "documentation": { - "id": 61664, + "id": 118312, "nodeType": "StructuredDocumentation", - "src": "1863:38:95", + "src": "2142:38:163", "text": "@dev Max length of the renewal fee" }, "mutability": "mutable", "name": "_rnfMaxLength", - "nameLocation": "1921:13:95", - "scope": 62751, + "nameLocation": "2200:13:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2082,10 +2268,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61665, + "id": 118313, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1904:7:95", + "src": "2183:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2094,21 +2280,21 @@ "visibility": "internal" }, { - "id": 61669, + "id": 118317, "nodeType": "VariableDeclaration", - "src": "1996:34:95", + "src": "2275:34:163", "nodes": [], "constant": false, "documentation": { - "id": 61667, + "id": 118315, "nodeType": "StructuredDocumentation", - "src": "1938:55:95", + "src": "2217:55:163", "text": "@dev Max acceptable age of the price oracle request" }, "mutability": "mutable", "name": "_maxAcceptableAge", - "nameLocation": "2013:17:95", - "scope": 62751, + "nameLocation": "2292:17:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2116,10 +2302,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61668, + "id": 118316, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1996:7:95", + "src": "2275:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2128,21 +2314,21 @@ "visibility": "internal" }, { - "id": 61672, + "id": 118320, "nodeType": "VariableDeclaration", - "src": "2079:33:95", + "src": "2358:33:163", "nodes": [], "constant": false, "documentation": { - "id": 61670, + "id": 118318, "nodeType": "StructuredDocumentation", - "src": "2034:42:95", + "src": "2313:42:163", "text": "@dev Price feed ID on Pyth for RON/USD" }, "mutability": "mutable", "name": "_pythIdForRONUSD", - "nameLocation": "2096:16:95", - "scope": 62751, + "nameLocation": "2375:16:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2150,10 +2336,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 61671, + "id": 118319, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2079:7:95", + "src": "2358:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2162,65 +2348,65 @@ "visibility": "internal" }, { - "id": 61676, + "id": 118324, "nodeType": "VariableDeclaration", - "src": "2178:35:95", + "src": "2457:35:163", "nodes": [], "constant": false, "documentation": { - "id": 61673, + "id": 118321, "nodeType": "StructuredDocumentation", - "src": "2116:59:95", + "src": "2395:59:163", "text": "@dev The percentage scale from domain price each period" }, "mutability": "mutable", "name": "_dpDownScaler", - "nameLocation": "2200:13:95", - "scope": 62751, + "nameLocation": "2479:13:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_storage", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", "typeString": "struct PeriodScaler" }, "typeName": { - "id": 61675, + "id": 118323, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61674, + "id": 118322, "name": "PeriodScaler", "nameLocations": [ - "2178:12:95" + "2457:12:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68668, - "src": "2178:12:95" + "referencedDeclaration": 125607, + "src": "2457:12:163" }, - "referencedDeclaration": 68668, - "src": "2178:12:95", + "referencedDeclaration": 125607, + "src": "2457:12:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_storage_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", "typeString": "struct PeriodScaler" } }, "visibility": "internal" }, { - "id": 61681, + "id": 118329, "nodeType": "VariableDeclaration", - "src": "2278:59:95", + "src": "2557:59:163", "nodes": [], "constant": false, "documentation": { - "id": 61677, + "id": 118325, "nodeType": "StructuredDocumentation", - "src": "2218:57:95", + "src": "2497:57:163", "text": "@dev Mapping from domain length => renewal fee in USD" }, "mutability": "mutable", "name": "_rnFee", - "nameLocation": "2331:6:95", - "scope": 62751, + "nameLocation": "2610:6:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2228,32 +2414,32 @@ "typeString": "mapping(uint256 => uint256)" }, "typeName": { - "id": 61680, + "id": 118328, "keyName": "length", - "keyNameLocation": "2294:6:95", + "keyNameLocation": "2573:6:163", "keyType": { - "id": 61678, + "id": 118326, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2286:7:95", + "src": "2565:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", - "src": "2278:43:95", + "src": "2557:43:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", "typeString": "mapping(uint256 => uint256)" }, "valueName": "usdPrice", - "valueNameLocation": "2312:8:95", + "valueNameLocation": "2591:8:163", "valueType": { - "id": 61679, + "id": 118327, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2304:7:95", + "src": "2583:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2263,66 +2449,66 @@ "visibility": "internal" }, { - "id": 61687, + "id": 118335, "nodeType": "VariableDeclaration", - "src": "2393:65:95", + "src": "2672:65:163", "nodes": [], "constant": false, "documentation": { - "id": 61682, + "id": 118330, "nodeType": "StructuredDocumentation", - "src": "2341:49:95", + "src": "2620:49:163", "text": "@dev Mapping from name => domain price in USD" }, "mutability": "mutable", "name": "_dp", - "nameLocation": "2455:3:95", - "scope": 62751, + "nameLocation": "2734:3:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$68591_storage_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", "typeString": "mapping(bytes32 => struct TimestampWrapper)" }, "typeName": { - "id": 61686, + "id": 118334, "keyName": "lbHash", - "keyNameLocation": "2409:6:95", + "keyNameLocation": "2688:6:163", "keyType": { - "id": 61683, + "id": 118331, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2401:7:95", + "src": "2680:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "2393:52:95", + "src": "2672:52:163", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$68591_storage_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", "typeString": "mapping(bytes32 => struct TimestampWrapper)" }, "valueName": "usdPrice", - "valueNameLocation": "2436:8:95", + "valueNameLocation": "2715:8:163", "valueType": { - "id": 61685, + "id": 118333, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61684, + "id": 118332, "name": "TimestampWrapper", "nameLocations": [ - "2419:16:95" + "2698:16:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68591, - "src": "2419:16:95" + "referencedDeclaration": 125530, + "src": "2698:16:163" }, - "referencedDeclaration": 68591, - "src": "2419:16:95", + "referencedDeclaration": 125530, + "src": "2698:16:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage_ptr", + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", "typeString": "struct TimestampWrapper" } } @@ -2330,21 +2516,21 @@ "visibility": "internal" }, { - "id": 61692, + "id": 118340, "nodeType": "VariableDeclaration", - "src": "2537:69:95", + "src": "2816:69:163", "nodes": [], "constant": false, "documentation": { - "id": 61688, + "id": 118336, "nodeType": "StructuredDocumentation", - "src": "2462:72:95", + "src": "2741:72:163", "text": "@dev Mapping from name => inverse bitwise of renewal fee overriding." }, "mutability": "mutable", "name": "_rnFeeOverriding", - "nameLocation": "2590:16:95", - "scope": 62751, + "nameLocation": "2869:16:163", + "scope": 119626, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2352,32 +2538,32 @@ "typeString": "mapping(bytes32 => uint256)" }, "typeName": { - "id": 61691, + "id": 118339, "keyName": "lbHash", - "keyNameLocation": "2553:6:95", + "keyNameLocation": "2832:6:163", "keyType": { - "id": 61689, + "id": 118337, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2545:7:95", + "src": "2824:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "2537:43:95", + "src": "2816:43:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" }, "valueName": "usdPrice", - "valueNameLocation": "2571:8:95", + "valueNameLocation": "2850:8:163", "valueType": { - "id": 61690, + "id": 118338, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2563:7:95", + "src": "2842:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2387,14 +2573,71 @@ "visibility": "internal" }, { - "id": 61699, + "id": 118345, + "nodeType": "VariableDeclaration", + "src": "2942:62:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118341, + "nodeType": "StructuredDocumentation", + "src": "2889:50:163", + "text": "@dev Mapping from label hash to overriden tier" + }, + "mutability": "mutable", + "name": "_tierOverriding", + "nameLocation": "2989:15:163", + "scope": 119626, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", + "typeString": "mapping(bytes32 => uint8)" + }, + "typeName": { + "id": 118344, + "keyName": "lbHash", + "keyNameLocation": "2958:6:163", + "keyType": { + "id": 118342, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2950:7:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2942:37:163", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", + "typeString": "mapping(bytes32 => uint8)" + }, + "valueName": "tier", + "valueNameLocation": "2974:4:163", + "valueType": { + "id": 118343, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2968:5:163", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + }, + "visibility": "internal" + }, + { + "id": 118352, "nodeType": "FunctionDefinition", - "src": "2611:55:95", + "src": "3009:55:163", "nodes": [], "body": { - "id": 61698, + "id": 118351, "nodeType": "Block", - "src": "2633:33:95", + "src": "3031:33:163", "nodes": [], "statements": [ { @@ -2402,18 +2645,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 61695, + "id": 118348, "name": "_disableInitializers", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50229, - "src": "2639:20:95", + "referencedDeclaration": 101505, + "src": "3037:20:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 61696, + "id": 118349, "isConstant": false, "isLValue": false, "isPure": false, @@ -2422,16 +2665,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2639:22:95", + "src": "3037:22:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61697, + "id": 118350, "nodeType": "ExpressionStatement", - "src": "2639:22:95" + "src": "3037:22:163" } ] }, @@ -2441,47 +2684,47 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 61693, + "id": 118346, "nodeType": "ParameterList", "parameters": [], - "src": "2622:2:95" + "src": "3020:2:163" }, "returnParameters": { - "id": 61694, + "id": 118347, "nodeType": "ParameterList", "parameters": [], - "src": "2633:0:95" + "src": "3031:0:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "payable", "virtual": false, "visibility": "public" }, { - "id": 61784, + "id": 118437, "nodeType": "FunctionDefinition", - "src": "2670:776:95", + "src": "3068:776:163", "nodes": [], "body": { - "id": 61783, + "id": 118436, "nodeType": "Block", - "src": "2976:470:95", + "src": "3374:470:163", "nodes": [], "statements": [ { "assignments": [ - 61729 + 118382 ], "declarations": [ { "constant": false, - "id": 61729, + "id": 118382, "mutability": "mutable", "name": "length", - "nameLocation": "2990:6:95", + "nameLocation": "3388:6:163", "nodeType": "VariableDeclaration", - "scope": 61783, - "src": "2982:14:95", + "scope": 118436, + "src": "3380:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2489,10 +2732,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61728, + "id": 118381, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2982:7:95", + "src": "3380:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2501,51 +2744,51 @@ "visibility": "internal" } ], - "id": 61732, + "id": 118385, "initialValue": { "expression": { - "id": 61730, + "id": 118383, "name": "operators", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61704, - "src": "2999:9:95", + "referencedDeclaration": 118357, + "src": "3397:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" } }, - "id": 61731, + "id": 118384, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3009:6:95", + "memberLocation": "3407:6:163", "memberName": "length", "nodeType": "MemberAccess", - "src": "2999:16:95", + "src": "3397:16:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2982:33:95" + "src": "3380:33:163" }, { "assignments": [ - 61734 + 118387 ], "declarations": [ { "constant": false, - "id": 61734, + "id": 118387, "mutability": "mutable", "name": "operatorRole", - "nameLocation": "3029:12:95", + "nameLocation": "3427:12:163", "nodeType": "VariableDeclaration", - "scope": 61783, - "src": "3021:20:95", + "scope": 118436, + "src": "3419:20:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2553,10 +2796,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 61733, + "id": 118386, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3021:7:95", + "src": "3419:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2565,38 +2808,38 @@ "visibility": "internal" } ], - "id": 61736, + "id": 118389, "initialValue": { - "id": 61735, + "id": 118388, "name": "OPERATOR_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61641, - "src": "3044:13:95", + "referencedDeclaration": 118289, + "src": "3442:13:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "3021:36:95" + "src": "3419:36:163" }, { "body": { - "id": 61754, + "id": 118407, "nodeType": "Block", - "src": "3093:93:95", + "src": "3491:93:163", "statements": [ { "expression": { "arguments": [ { - "id": 61744, + "id": 118397, "name": "operatorRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61734, - "src": "3112:12:95", + "referencedDeclaration": 118387, + "src": "3510:12:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2604,25 +2847,25 @@ }, { "baseExpression": { - "id": 61745, + "id": 118398, "name": "operators", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61704, - "src": "3126:9:95", + "referencedDeclaration": 118357, + "src": "3524:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" } }, - "id": 61747, + "id": 118400, "indexExpression": { - "id": 61746, + "id": 118399, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61738, - "src": "3136:1:95", + "referencedDeclaration": 118391, + "src": "3534:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2633,7 +2876,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3126:12:95", + "src": "3524:12:163", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2651,18 +2894,18 @@ "typeString": "address" } ], - "id": 61743, + "id": 118396, "name": "_setupRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48758, - "src": "3101:10:95", + "referencedDeclaration": 100034, + "src": "3499:10:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, - "id": 61748, + "id": 118401, "isConstant": false, "isLValue": false, "isPure": false, @@ -2671,25 +2914,25 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3101:38:95", + "src": "3499:38:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61749, + "id": 118402, "nodeType": "ExpressionStatement", - "src": "3101:38:95" + "src": "3499:38:163" }, { - "id": 61753, + "id": 118406, "nodeType": "UncheckedBlock", - "src": "3148:32:95", + "src": "3546:32:163", "statements": [ { "expression": { - "id": 61751, + "id": 118404, "isConstant": false, "isLValue": false, "isPure": false, @@ -2697,14 +2940,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "3168:3:95", + "src": "3566:3:163", "subExpression": { - "id": 61750, + "id": 118403, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61738, - "src": "3170:1:95", + "referencedDeclaration": 118391, + "src": "3568:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2715,9 +2958,9 @@ "typeString": "uint256" } }, - "id": 61752, + "id": 118405, "nodeType": "ExpressionStatement", - "src": "3168:3:95" + "src": "3566:3:163" } ] } @@ -2728,18 +2971,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 61742, + "id": 118395, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 61740, + "id": 118393, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61738, - "src": "3080:1:95", + "referencedDeclaration": 118391, + "src": "3478:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2748,38 +2991,38 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 61741, + "id": 118394, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61729, - "src": "3084:6:95", + "referencedDeclaration": 118382, + "src": "3482:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3080:10:95", + "src": "3478:10:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 61755, + "id": 118408, "initializationExpression": { "assignments": [ - 61738 + 118391 ], "declarations": [ { "constant": false, - "id": 61738, + "id": 118391, "mutability": "mutable", "name": "i", - "nameLocation": "3077:1:95", + "nameLocation": "3475:1:163", "nodeType": "VariableDeclaration", - "scope": 61755, - "src": "3069:9:95", + "scope": 118408, + "src": "3467:9:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2787,10 +3030,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61737, + "id": 118390, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3069:7:95", + "src": "3467:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2799,78 +3042,78 @@ "visibility": "internal" } ], - "id": 61739, + "id": 118392, "nodeType": "VariableDeclarationStatement", - "src": "3069:9:95" + "src": "3467:9:163" }, "nodeType": "ForStatement", - "src": "3064:122:95" + "src": "3462:122:163" }, { "expression": { - "id": 61758, + "id": 118411, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 61756, + "id": 118409, "name": "_auction", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61660, - "src": "3191:8:95", + "referencedDeclaration": 118308, + "src": "3589:8:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", + "typeIdentifier": "t_contract$_INSAuction_$123292", "typeString": "contract INSAuction" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 61757, + "id": 118410, "name": "auction", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61719, - "src": "3202:7:95", + "referencedDeclaration": 118372, + "src": "3600:7:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", + "typeIdentifier": "t_contract$_INSAuction_$123292", "typeString": "contract INSAuction" } }, - "src": "3191:18:95", + "src": "3589:18:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", + "typeIdentifier": "t_contract$_INSAuction_$123292", "typeString": "contract INSAuction" } }, - "id": 61759, + "id": 118412, "nodeType": "ExpressionStatement", - "src": "3191:18:95" + "src": "3589:18:163" }, { "expression": { "arguments": [ { - "id": 61761, + "id": 118414, "name": "DEFAULT_ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48562, - "src": "3226:18:95", + "referencedDeclaration": 99838, + "src": "3624:18:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 61762, + "id": 118415, "name": "admin", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61701, - "src": "3246:5:95", + "referencedDeclaration": 118354, + "src": "3644:5:163", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2888,18 +3131,18 @@ "typeString": "address" } ], - "id": 61760, + "id": 118413, "name": "_setupRole", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48758, - "src": "3215:10:95", + "referencedDeclaration": 100034, + "src": "3613:10:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, - "id": 61763, + "id": 118416, "isConstant": false, "isLValue": false, "isPure": false, @@ -2908,29 +3151,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3215:37:95", + "src": "3613:37:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61764, + "id": 118417, "nodeType": "ExpressionStatement", - "src": "3215:37:95" + "src": "3613:37:163" }, { "expression": { "arguments": [ { - "id": 61766, + "id": 118419, "name": "renewalFees", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61708, - "src": "3282:11:95", + "referencedDeclaration": 118361, + "src": "3680:11:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_calldata_ptr_$dyn_calldata_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" } } @@ -2938,22 +3181,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_calldata_ptr_$dyn_calldata_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" } ], - "id": 61765, + "id": 118418, "name": "_setRenewalFeeByLengths", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62676, - "src": "3258:23:95", + "referencedDeclaration": 119372, + "src": "3656:23:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$66417_calldata_ptr_$dyn_calldata_ptr_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr_$returns$__$", "typeString": "function (struct INSDomainPrice.RenewalFee calldata[] calldata)" } }, - "id": 61767, + "id": 118420, "isConstant": false, "isLValue": false, "isPure": false, @@ -2962,27 +3205,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3258:36:95", + "src": "3656:36:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61768, + "id": 118421, "nodeType": "ExpressionStatement", - "src": "3258:36:95" + "src": "3656:36:163" }, { "expression": { "arguments": [ { - "id": 61770, + "id": 118423, "name": "taxRatio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61710, - "src": "3313:8:95", + "referencedDeclaration": 118363, + "src": "3711:8:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2996,18 +3239,18 @@ "typeString": "uint256" } ], - "id": 61769, + "id": 118422, "name": "_setTaxRatio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62571, - "src": "3300:12:95", + "referencedDeclaration": 119267, + "src": "3698:12:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 61771, + "id": 118424, "isConstant": false, "isLValue": false, "isPure": false, @@ -3016,29 +3259,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3300:22:95", + "src": "3698:22:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61772, + "id": 118425, "nodeType": "ExpressionStatement", - "src": "3300:22:95" + "src": "3698:22:163" }, { "expression": { "arguments": [ { - "id": 61774, + "id": 118427, "name": "domainPriceScaleRule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61713, - "src": "3353:20:95", + "referencedDeclaration": 118366, + "src": "3751:20:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_calldata_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", "typeString": "struct PeriodScaler calldata" } } @@ -3046,22 +3289,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_calldata_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", "typeString": "struct PeriodScaler calldata" } ], - "id": 61773, + "id": 118426, "name": "_setDomainPriceScaleRule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62592, - "src": "3328:24:95", + "referencedDeclaration": 119288, + "src": "3726:24:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$68668_calldata_ptr_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$125607_calldata_ptr_$returns$__$", "typeString": "function (struct PeriodScaler calldata)" } }, - "id": 61775, + "id": 118428, "isConstant": false, "isLValue": false, "isPure": false, @@ -3070,51 +3313,51 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3328:46:95", + "src": "3726:46:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61776, + "id": 118429, "nodeType": "ExpressionStatement", - "src": "3328:46:95" + "src": "3726:46:163" }, { "expression": { "arguments": [ { - "id": 61778, + "id": 118431, "name": "pyth", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61716, - "src": "3401:4:95", + "referencedDeclaration": 118369, + "src": "3799:4:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" } }, { - "id": 61779, + "id": 118432, "name": "maxAcceptableAge", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61721, - "src": "3407:16:95", + "referencedDeclaration": 118374, + "src": "3805:16:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 61780, + "id": 118433, "name": "pythIdForRONUSD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61723, - "src": "3425:15:95", + "referencedDeclaration": 118376, + "src": "3823:15:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3124,7 +3367,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" }, { @@ -3136,18 +3379,18 @@ "typeString": "bytes32" } ], - "id": 61777, + "id": 118430, "name": "_setPythOracleConfig", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62708, - "src": "3380:20:95", + "referencedDeclaration": 119404, + "src": "3778:20:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$54844_$_t_uint256_$_t_bytes32_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (contract IPyth,uint256,bytes32)" } }, - "id": 61781, + "id": 118434, "isConstant": false, "isLValue": false, "isPure": false, @@ -3156,16 +3399,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3380:61:95", + "src": "3778:61:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61782, + "id": 118435, "nodeType": "ExpressionStatement", - "src": "3380:61:95" + "src": "3778:61:163" } ] }, @@ -3174,37 +3417,37 @@ "kind": "function", "modifiers": [ { - "id": 61726, + "id": 118379, "kind": "modifierInvocation", "modifierName": { - "id": 61725, + "id": 118378, "name": "initializer", "nameLocations": [ - "2964:11:95" + "3362:11:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 50150, - "src": "2964:11:95" + "referencedDeclaration": 101426, + "src": "3362:11:163" }, "nodeType": "ModifierInvocation", - "src": "2964:11:95" + "src": "3362:11:163" } ], "name": "initialize", - "nameLocation": "2679:10:95", + "nameLocation": "3077:10:163", "parameters": { - "id": 61724, + "id": 118377, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61701, + "id": 118354, "mutability": "mutable", "name": "admin", - "nameLocation": "2703:5:95", + "nameLocation": "3101:5:163", "nodeType": "VariableDeclaration", - "scope": 61784, - "src": "2695:13:95", + "scope": 118437, + "src": "3093:13:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3212,10 +3455,10 @@ "typeString": "address" }, "typeName": { - "id": 61700, + "id": 118353, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2695:7:95", + "src": "3093:7:163", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3226,13 +3469,13 @@ }, { "constant": false, - "id": 61704, + "id": 118357, "mutability": "mutable", "name": "operators", - "nameLocation": "2733:9:95", + "nameLocation": "3131:9:163", "nodeType": "VariableDeclaration", - "scope": 61784, - "src": "2714:28:95", + "scope": 118437, + "src": "3112:28:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -3241,19 +3484,19 @@ }, "typeName": { "baseType": { - "id": 61702, + "id": 118355, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2714:7:95", + "src": "3112:7:163", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 61703, + "id": 118356, "nodeType": "ArrayTypeName", - "src": "2714:9:95", + "src": "3112:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -3263,45 +3506,45 @@ }, { "constant": false, - "id": 61708, + "id": 118361, "mutability": "mutable", "name": "renewalFees", - "nameLocation": "2770:11:95", + "nameLocation": "3168:11:163", "nodeType": "VariableDeclaration", - "scope": 61784, - "src": "2748:33:95", + "scope": 118437, + "src": "3146:33:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_calldata_ptr_$dyn_calldata_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", "typeString": "struct INSDomainPrice.RenewalFee[]" }, "typeName": { "baseType": { - "id": 61706, + "id": 118359, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61705, + "id": 118358, "name": "RenewalFee", "nameLocations": [ - "2748:10:95" + "3146:10:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 66417, - "src": "2748:10:95" + "referencedDeclaration": 123317, + "src": "3146:10:163" }, - "referencedDeclaration": 66417, - "src": "2748:10:95", + "referencedDeclaration": 123317, + "src": "3146:10:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_storage_ptr", + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", "typeString": "struct INSDomainPrice.RenewalFee" } }, - "id": 61707, + "id": 118360, "nodeType": "ArrayTypeName", - "src": "2748:12:95", + "src": "3146:12:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", "typeString": "struct INSDomainPrice.RenewalFee[]" } }, @@ -3309,13 +3552,13 @@ }, { "constant": false, - "id": 61710, + "id": 118363, "mutability": "mutable", "name": "taxRatio", - "nameLocation": "2795:8:95", + "nameLocation": "3193:8:163", "nodeType": "VariableDeclaration", - "scope": 61784, - "src": "2787:16:95", + "scope": 118437, + "src": "3185:16:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3323,10 +3566,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61709, + "id": 118362, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2787:7:95", + "src": "3185:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3336,36 +3579,36 @@ }, { "constant": false, - "id": 61713, + "id": 118366, "mutability": "mutable", "name": "domainPriceScaleRule", - "nameLocation": "2831:20:95", + "nameLocation": "3229:20:163", "nodeType": "VariableDeclaration", - "scope": 61784, - "src": "2809:42:95", + "scope": 118437, + "src": "3207:42:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_calldata_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", "typeString": "struct PeriodScaler" }, "typeName": { - "id": 61712, + "id": 118365, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61711, + "id": 118364, "name": "PeriodScaler", "nameLocations": [ - "2809:12:95" + "3207:12:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68668, - "src": "2809:12:95" + "referencedDeclaration": 125607, + "src": "3207:12:163" }, - "referencedDeclaration": 68668, - "src": "2809:12:95", + "referencedDeclaration": 125607, + "src": "3207:12:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_storage_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", "typeString": "struct PeriodScaler" } }, @@ -3373,36 +3616,36 @@ }, { "constant": false, - "id": 61716, + "id": 118369, "mutability": "mutable", "name": "pyth", - "nameLocation": "2863:4:95", + "nameLocation": "3261:4:163", "nodeType": "VariableDeclaration", - "scope": 61784, - "src": "2857:10:95", + "scope": 118437, + "src": "3255:10:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" }, "typeName": { - "id": 61715, + "id": 118368, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61714, + "id": 118367, "name": "IPyth", "nameLocations": [ - "2857:5:95" + "3255:5:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 54844, - "src": "2857:5:95" + "referencedDeclaration": 106120, + "src": "3255:5:163" }, - "referencedDeclaration": 54844, - "src": "2857:5:95", + "referencedDeclaration": 106120, + "src": "3255:5:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" } }, @@ -3410,36 +3653,36 @@ }, { "constant": false, - "id": 61719, + "id": 118372, "mutability": "mutable", "name": "auction", - "nameLocation": "2884:7:95", + "nameLocation": "3282:7:163", "nodeType": "VariableDeclaration", - "scope": 61784, - "src": "2873:18:95", + "scope": 118437, + "src": "3271:18:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", + "typeIdentifier": "t_contract$_INSAuction_$123292", "typeString": "contract INSAuction" }, "typeName": { - "id": 61718, + "id": 118371, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61717, + "id": 118370, "name": "INSAuction", "nameLocations": [ - "2873:10:95" + "3271:10:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 66400, - "src": "2873:10:95" + "referencedDeclaration": 123292, + "src": "3271:10:163" }, - "referencedDeclaration": 66400, - "src": "2873:10:95", + "referencedDeclaration": 123292, + "src": "3271:10:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", + "typeIdentifier": "t_contract$_INSAuction_$123292", "typeString": "contract INSAuction" } }, @@ -3447,13 +3690,13 @@ }, { "constant": false, - "id": 61721, + "id": 118374, "mutability": "mutable", "name": "maxAcceptableAge", - "nameLocation": "2905:16:95", + "nameLocation": "3303:16:163", "nodeType": "VariableDeclaration", - "scope": 61784, - "src": "2897:24:95", + "scope": 118437, + "src": "3295:24:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3461,10 +3704,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61720, + "id": 118373, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2897:7:95", + "src": "3295:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3474,13 +3717,13 @@ }, { "constant": false, - "id": 61723, + "id": 118376, "mutability": "mutable", "name": "pythIdForRONUSD", - "nameLocation": "2935:15:95", + "nameLocation": "3333:15:163", "nodeType": "VariableDeclaration", - "scope": 61784, - "src": "2927:23:95", + "scope": 118437, + "src": "3325:23:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3488,10 +3731,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 61722, + "id": 118375, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2927:7:95", + "src": "3325:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3500,97 +3743,97 @@ "visibility": "internal" } ], - "src": "2689:265:95" + "src": "3087:265:163" }, "returnParameters": { - "id": 61727, + "id": 118380, "nodeType": "ParameterList", "parameters": [], - "src": "2976:0:95" + "src": "3374:0:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 61801, + "id": 118454, "nodeType": "FunctionDefinition", - "src": "3494:179:95", + "src": "3892:179:163", "nodes": [], "body": { - "id": 61800, + "id": 118453, "nodeType": "Block", - "src": "3611:62:95", + "src": "4009:62:163", "nodes": [], "statements": [ { "expression": { "components": [ { - "id": 61795, + "id": 118448, "name": "_pyth", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61656, - "src": "3625:5:95", + "referencedDeclaration": 118304, + "src": "4023:5:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" } }, { - "id": 61796, + "id": 118449, "name": "_maxAcceptableAge", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61669, - "src": "3632:17:95", + "referencedDeclaration": 118317, + "src": "4030:17:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 61797, + "id": 118450, "name": "_pythIdForRONUSD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61672, - "src": "3651:16:95", + "referencedDeclaration": 118320, + "src": "4049:16:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 61798, + "id": 118451, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3624:44:95", + "src": "4022:44:163", "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_contract$_IPyth_$54844_$_t_uint256_$_t_bytes32_$", + "typeIdentifier": "t_tuple$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$", "typeString": "tuple(contract IPyth,uint256,bytes32)" } }, - "functionReturnParameters": 61794, - "id": 61799, + "functionReturnParameters": 118447, + "id": 118452, "nodeType": "Return", - "src": "3617:51:95" + "src": "4015:51:163" } ] }, "baseFunctions": [ - 66499 + 123409 ], "documentation": { - "id": 61785, + "id": 118438, "nodeType": "StructuredDocumentation", - "src": "3450:41:95", + "src": "3848:41:163", "text": " @inheritdoc INSDomainPrice" }, "functionSelector": "2be09ecc", @@ -3598,49 +3841,49 @@ "kind": "function", "modifiers": [], "name": "getPythOracleConfig", - "nameLocation": "3503:19:95", + "nameLocation": "3901:19:163", "parameters": { - "id": 61786, + "id": 118439, "nodeType": "ParameterList", "parameters": [], - "src": "3522:2:95" + "src": "3920:2:163" }, "returnParameters": { - "id": 61794, + "id": 118447, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61789, + "id": 118442, "mutability": "mutable", "name": "pyth", - "nameLocation": "3554:4:95", + "nameLocation": "3952:4:163", "nodeType": "VariableDeclaration", - "scope": 61801, - "src": "3548:10:95", + "scope": 118454, + "src": "3946:10:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" }, "typeName": { - "id": 61788, + "id": 118441, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61787, + "id": 118440, "name": "IPyth", "nameLocations": [ - "3548:5:95" + "3946:5:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 54844, - "src": "3548:5:95" + "referencedDeclaration": 106120, + "src": "3946:5:163" }, - "referencedDeclaration": 54844, - "src": "3548:5:95", + "referencedDeclaration": 106120, + "src": "3946:5:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" } }, @@ -3648,13 +3891,13 @@ }, { "constant": false, - "id": 61791, + "id": 118444, "mutability": "mutable", "name": "maxAcceptableAge", - "nameLocation": "3568:16:95", + "nameLocation": "3966:16:163", "nodeType": "VariableDeclaration", - "scope": 61801, - "src": "3560:24:95", + "scope": 118454, + "src": "3958:24:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3662,10 +3905,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61790, + "id": 118443, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3560:7:95", + "src": "3958:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3675,13 +3918,13 @@ }, { "constant": false, - "id": 61793, + "id": 118446, "mutability": "mutable", "name": "pythIdForRONUSD", - "nameLocation": "3594:15:95", + "nameLocation": "3992:15:163", "nodeType": "VariableDeclaration", - "scope": 61801, - "src": "3586:23:95", + "scope": 118454, + "src": "3984:23:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3689,10 +3932,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 61792, + "id": 118445, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3586:7:95", + "src": "3984:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3701,58 +3944,58 @@ "visibility": "internal" } ], - "src": "3547:63:95" + "src": "3945:63:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 61822, + "id": 118475, "nodeType": "FunctionDefinition", - "src": "3721:212:95", + "src": "4119:212:163", "nodes": [], "body": { - "id": 61821, + "id": 118474, "nodeType": "Block", - "src": "3861:72:95", + "src": "4259:72:163", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 61816, + "id": 118469, "name": "pyth", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61805, - "src": "3888:4:95", + "referencedDeclaration": 118458, + "src": "4286:4:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" } }, { - "id": 61817, + "id": 118470, "name": "maxAcceptableAge", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61807, - "src": "3894:16:95", + "referencedDeclaration": 118460, + "src": "4292:16:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 61818, + "id": 118471, "name": "pythIdForRONUSD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61809, - "src": "3912:15:95", + "referencedDeclaration": 118462, + "src": "4310:15:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3762,7 +4005,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" }, { @@ -3774,18 +4017,18 @@ "typeString": "bytes32" } ], - "id": 61815, + "id": 118468, "name": "_setPythOracleConfig", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62708, - "src": "3867:20:95", + "referencedDeclaration": 119404, + "src": "4265:20:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$54844_$_t_uint256_$_t_bytes32_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", "typeString": "function (contract IPyth,uint256,bytes32)" } }, - "id": 61819, + "id": 118472, "isConstant": false, "isLValue": false, "isPure": false, @@ -3794,26 +4037,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3867:61:95", + "src": "4265:61:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61820, + "id": 118473, "nodeType": "ExpressionStatement", - "src": "3867:61:95" + "src": "4265:61:163" } ] }, "baseFunctions": [ - 66510 + 123420 ], "documentation": { - "id": 61802, + "id": 118455, "nodeType": "StructuredDocumentation", - "src": "3677:41:95", + "src": "4075:41:163", "text": " @inheritdoc INSDomainPrice" }, "functionSelector": "28dd3065", @@ -3823,72 +4066,72 @@ { "arguments": [ { - "id": 61812, + "id": 118465, "name": "DEFAULT_ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48562, - "src": "3839:18:95", + "referencedDeclaration": 99838, + "src": "4237:18:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 61813, + "id": 118466, "kind": "modifierInvocation", "modifierName": { - "id": 61811, + "id": 118464, "name": "onlyRole", "nameLocations": [ - "3830:8:95" + "4228:8:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48573, - "src": "3830:8:95" + "referencedDeclaration": 99849, + "src": "4228:8:163" }, "nodeType": "ModifierInvocation", - "src": "3830:28:95" + "src": "4228:28:163" } ], "name": "setPythOracleConfig", - "nameLocation": "3730:19:95", + "nameLocation": "4128:19:163", "parameters": { - "id": 61810, + "id": 118463, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61805, + "id": 118458, "mutability": "mutable", "name": "pyth", - "nameLocation": "3756:4:95", + "nameLocation": "4154:4:163", "nodeType": "VariableDeclaration", - "scope": 61822, - "src": "3750:10:95", + "scope": 118475, + "src": "4148:10:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" }, "typeName": { - "id": 61804, + "id": 118457, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61803, + "id": 118456, "name": "IPyth", "nameLocations": [ - "3750:5:95" + "4148:5:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 54844, - "src": "3750:5:95" + "referencedDeclaration": 106120, + "src": "4148:5:163" }, - "referencedDeclaration": 54844, - "src": "3750:5:95", + "referencedDeclaration": 106120, + "src": "4148:5:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", + "typeIdentifier": "t_contract$_IPyth_$106120", "typeString": "contract IPyth" } }, @@ -3896,13 +4139,13 @@ }, { "constant": false, - "id": 61807, + "id": 118460, "mutability": "mutable", "name": "maxAcceptableAge", - "nameLocation": "3770:16:95", + "nameLocation": "4168:16:163", "nodeType": "VariableDeclaration", - "scope": 61822, - "src": "3762:24:95", + "scope": 118475, + "src": "4160:24:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3910,10 +4153,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61806, + "id": 118459, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3762:7:95", + "src": "4160:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3923,13 +4166,13 @@ }, { "constant": false, - "id": 61809, + "id": 118462, "mutability": "mutable", "name": "pythIdForRONUSD", - "nameLocation": "3796:15:95", + "nameLocation": "4194:15:163", "nodeType": "VariableDeclaration", - "scope": 61822, - "src": "3788:23:95", + "scope": 118475, + "src": "4186:23:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3937,10 +4180,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 61808, + "id": 118461, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3788:7:95", + "src": "4186:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3949,44 +4192,44 @@ "visibility": "internal" } ], - "src": "3749:63:95" + "src": "4147:63:163" }, "returnParameters": { - "id": 61814, + "id": 118467, "nodeType": "ParameterList", "parameters": [], - "src": "3861:0:95" + "src": "4259:0:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 61881, + "id": 118534, "nodeType": "FunctionDefinition", - "src": "3981:396:95", + "src": "4379:396:163", "nodes": [], "body": { - "id": 61880, + "id": 118533, "nodeType": "Block", - "src": "4071:306:95", + "src": "4469:306:163", "nodes": [], "statements": [ { "assignments": [ - 61831 + 118484 ], "declarations": [ { "constant": false, - "id": 61831, + "id": 118484, "mutability": "mutable", "name": "rnfMaxLength", - "nameLocation": "4085:12:95", + "nameLocation": "4483:12:163", "nodeType": "VariableDeclaration", - "scope": 61880, - "src": "4077:20:95", + "scope": 118533, + "src": "4475:20:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3994,10 +4237,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61830, + "id": 118483, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4077:7:95", + "src": "4475:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4006,38 +4249,38 @@ "visibility": "internal" } ], - "id": 61833, + "id": 118486, "initialValue": { - "id": 61832, + "id": 118485, "name": "_rnfMaxLength", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61666, - "src": "4100:13:95", + "referencedDeclaration": 118314, + "src": "4498:13:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4077:36:95" + "src": "4475:36:163" }, { "expression": { - "id": 61841, + "id": 118494, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 61834, + "id": 118487, "name": "renewalFees", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61828, - "src": "4119:11:95", + "referencedDeclaration": 118481, + "src": "4517:11:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" } }, @@ -4046,12 +4289,12 @@ "rightHandSide": { "arguments": [ { - "id": 61839, + "id": 118492, "name": "rnfMaxLength", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61831, - "src": "4150:12:95", + "referencedDeclaration": 118484, + "src": "4548:12:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4065,48 +4308,48 @@ "typeString": "uint256" } ], - "id": 61838, + "id": 118491, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4133:16:95", + "src": "4531:16:163", "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RenewalFee_$66417_memory_ptr_$dyn_memory_ptr_$", + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct INSDomainPrice.RenewalFee memory[] memory)" }, "typeName": { "baseType": { - "id": 61836, + "id": 118489, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61835, + "id": 118488, "name": "RenewalFee", "nameLocations": [ - "4137:10:95" + "4535:10:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 66417, - "src": "4137:10:95" + "referencedDeclaration": 123317, + "src": "4535:10:163" }, - "referencedDeclaration": 66417, - "src": "4137:10:95", + "referencedDeclaration": 123317, + "src": "4535:10:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_storage_ptr", + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", "typeString": "struct INSDomainPrice.RenewalFee" } }, - "id": 61837, + "id": 118490, "nodeType": "ArrayTypeName", - "src": "4137:12:95", + "src": "4535:12:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", "typeString": "struct INSDomainPrice.RenewalFee[]" } } }, - "id": 61840, + "id": 118493, "isConstant": false, "isLValue": false, "isPure": false, @@ -4115,37 +4358,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4133:30:95", + "src": "4531:30:163", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" } }, - "src": "4119:44:95", + "src": "4517:44:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" } }, - "id": 61842, + "id": 118495, "nodeType": "ExpressionStatement", - "src": "4119:44:95" + "src": "4517:44:163" }, { "assignments": [ - 61844 + 118497 ], "declarations": [ { "constant": false, - "id": 61844, + "id": 118497, "mutability": "mutable", "name": "len", - "nameLocation": "4177:3:95", + "nameLocation": "4575:3:163", "nodeType": "VariableDeclaration", - "scope": 61880, - "src": "4169:11:95", + "scope": 118533, + "src": "4567:11:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4153,10 +4396,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61843, + "id": 118496, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4169:7:95", + "src": "4567:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4165,35 +4408,35 @@ "visibility": "internal" } ], - "id": 61845, + "id": 118498, "nodeType": "VariableDeclarationStatement", - "src": "4169:11:95" + "src": "4567:11:163" }, { "body": { - "id": 61878, + "id": 118531, "nodeType": "Block", - "src": "4222:151:95", + "src": "4620:151:163", "statements": [ { - "id": 61877, + "id": 118530, "nodeType": "UncheckedBlock", - "src": "4230:137:95", + "src": "4628:137:163", "statements": [ { "expression": { - "id": 61856, + "id": 118509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 61852, + "id": 118505, "name": "len", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61844, - "src": "4250:3:95", + "referencedDeclaration": 118497, + "src": "4648:3:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4206,18 +4449,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 61855, + "id": 118508, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 61853, + "id": 118506, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61847, - "src": "4256:1:95", + "referencedDeclaration": 118500, + "src": "4654:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4227,39 +4470,39 @@ "operator": "+", "rightExpression": { "hexValue": "31", - "id": 61854, + "id": 118507, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4260:1:95", + "src": "4658:1:163", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "4256:5:95", + "src": "4654:5:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4250:11:95", + "src": "4648:11:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 61857, + "id": 118510, "nodeType": "ExpressionStatement", - "src": "4250:11:95" + "src": "4648:11:163" }, { "expression": { - "id": 61863, + "id": 118516, "isConstant": false, "isLValue": false, "isPure": false, @@ -4267,25 +4510,25 @@ "leftHandSide": { "expression": { "baseExpression": { - "id": 61858, + "id": 118511, "name": "renewalFees", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61828, - "src": "4271:11:95", + "referencedDeclaration": 118481, + "src": "4669:11:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" } }, - "id": 61860, + "id": 118513, "indexExpression": { - "id": 61859, + "id": 118512, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61847, - "src": "4283:1:95", + "referencedDeclaration": 118500, + "src": "4681:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4296,22 +4539,22 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4271:14:95", + "src": "4669:14:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_memory_ptr", + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", "typeString": "struct INSDomainPrice.RenewalFee memory" } }, - "id": 61861, + "id": 118514, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, - "memberLocation": "4286:11:95", + "memberLocation": "4684:11:163", "memberName": "labelLength", "nodeType": "MemberAccess", - "referencedDeclaration": 66414, - "src": "4271:26:95", + "referencedDeclaration": 123314, + "src": "4669:26:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4320,30 +4563,30 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 61862, + "id": 118515, "name": "len", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61844, - "src": "4300:3:95", + "referencedDeclaration": 118497, + "src": "4698:3:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4271:32:95", + "src": "4669:32:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 61864, + "id": 118517, "nodeType": "ExpressionStatement", - "src": "4271:32:95" + "src": "4669:32:163" }, { "expression": { - "id": 61872, + "id": 118525, "isConstant": false, "isLValue": false, "isPure": false, @@ -4351,25 +4594,25 @@ "leftHandSide": { "expression": { "baseExpression": { - "id": 61865, + "id": 118518, "name": "renewalFees", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61828, - "src": "4313:11:95", + "referencedDeclaration": 118481, + "src": "4711:11:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" } }, - "id": 61867, + "id": 118520, "indexExpression": { - "id": 61866, + "id": 118519, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61847, - "src": "4325:1:95", + "referencedDeclaration": 118500, + "src": "4723:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4380,22 +4623,22 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4313:14:95", + "src": "4711:14:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_memory_ptr", + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", "typeString": "struct INSDomainPrice.RenewalFee memory" } }, - "id": 61868, + "id": 118521, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, - "memberLocation": "4328:3:95", + "memberLocation": "4726:3:163", "memberName": "fee", "nodeType": "MemberAccess", - "referencedDeclaration": 66416, - "src": "4313:18:95", + "referencedDeclaration": 123316, + "src": "4711:18:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4405,25 +4648,25 @@ "operator": "=", "rightHandSide": { "baseExpression": { - "id": 61869, + "id": 118522, "name": "_rnFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61681, - "src": "4334:6:95", + "referencedDeclaration": 118329, + "src": "4732:6:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", "typeString": "mapping(uint256 => uint256)" } }, - "id": 61871, + "id": 118524, "indexExpression": { - "id": 61870, + "id": 118523, "name": "len", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61844, - "src": "4341:3:95", + "referencedDeclaration": 118497, + "src": "4739:3:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4434,25 +4677,25 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4334:11:95", + "src": "4732:11:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4313:32:95", + "src": "4711:32:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 61873, + "id": 118526, "nodeType": "ExpressionStatement", - "src": "4313:32:95" + "src": "4711:32:163" }, { "expression": { - "id": 61875, + "id": 118528, "isConstant": false, "isLValue": false, "isPure": false, @@ -4460,14 +4703,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "4355:3:95", + "src": "4753:3:163", "subExpression": { - "id": 61874, + "id": 118527, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61847, - "src": "4357:1:95", + "referencedDeclaration": 118500, + "src": "4755:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4478,9 +4721,9 @@ "typeString": "uint256" } }, - "id": 61876, + "id": 118529, "nodeType": "ExpressionStatement", - "src": "4355:3:95" + "src": "4753:3:163" } ] } @@ -4491,18 +4734,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 61851, + "id": 118504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 61849, + "id": 118502, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61847, - "src": "4203:1:95", + "referencedDeclaration": 118500, + "src": "4601:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4511,38 +4754,38 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 61850, + "id": 118503, "name": "rnfMaxLength", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61831, - "src": "4207:12:95", + "referencedDeclaration": 118484, + "src": "4605:12:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4203:16:95", + "src": "4601:16:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 61879, + "id": 118532, "initializationExpression": { "assignments": [ - 61847 + 118500 ], "declarations": [ { "constant": false, - "id": 61847, + "id": 118500, "mutability": "mutable", "name": "i", - "nameLocation": "4200:1:95", + "nameLocation": "4598:1:163", "nodeType": "VariableDeclaration", - "scope": 61879, - "src": "4192:9:95", + "scope": 118532, + "src": "4590:9:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4550,10 +4793,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61846, + "id": 118499, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4192:7:95", + "src": "4590:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4562,22 +4805,22 @@ "visibility": "internal" } ], - "id": 61848, + "id": 118501, "nodeType": "VariableDeclarationStatement", - "src": "4192:9:95" + "src": "4590:9:163" }, "nodeType": "ForStatement", - "src": "4187:186:95" + "src": "4585:186:163" } ] }, "baseFunctions": [ - 66532 + 123442 ], "documentation": { - "id": 61823, + "id": 118476, "nodeType": "StructuredDocumentation", - "src": "3937:41:95", + "src": "4335:41:163", "text": " @inheritdoc INSDomainPrice" }, "functionSelector": "0a44f51f", @@ -4585,94 +4828,94 @@ "kind": "function", "modifiers": [], "name": "getRenewalFeeByLengths", - "nameLocation": "3990:22:95", + "nameLocation": "4388:22:163", "parameters": { - "id": 61824, + "id": 118477, "nodeType": "ParameterList", "parameters": [], - "src": "4012:2:95" + "src": "4410:2:163" }, "returnParameters": { - "id": 61829, + "id": 118482, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61828, + "id": 118481, "mutability": "mutable", "name": "renewalFees", - "nameLocation": "4058:11:95", + "nameLocation": "4456:11:163", "nodeType": "VariableDeclaration", - "scope": 61881, - "src": "4038:31:95", + "scope": 118534, + "src": "4436:31:163", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_memory_ptr_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", "typeString": "struct INSDomainPrice.RenewalFee[]" }, "typeName": { "baseType": { - "id": 61826, + "id": 118479, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61825, + "id": 118478, "name": "RenewalFee", "nameLocations": [ - "4038:10:95" + "4436:10:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 66417, - "src": "4038:10:95" + "referencedDeclaration": 123317, + "src": "4436:10:163" }, - "referencedDeclaration": 66417, - "src": "4038:10:95", + "referencedDeclaration": 123317, + "src": "4436:10:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_storage_ptr", + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", "typeString": "struct INSDomainPrice.RenewalFee" } }, - "id": 61827, + "id": 118480, "nodeType": "ArrayTypeName", - "src": "4038:12:95", + "src": "4436:12:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", "typeString": "struct INSDomainPrice.RenewalFee[]" } }, "visibility": "internal" } ], - "src": "4037:33:95" + "src": "4435:33:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 61897, + "id": 118550, "nodeType": "FunctionDefinition", - "src": "4425:152:95", + "src": "4823:152:163", "nodes": [], "body": { - "id": 61896, + "id": 118549, "nodeType": "Block", - "src": "4530:47:95", + "src": "4928:47:163", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 61893, + "id": 118546, "name": "renewalFees", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61886, - "src": "4560:11:95", + "referencedDeclaration": 118539, + "src": "4958:11:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_calldata_ptr_$dyn_calldata_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" } } @@ -4680,22 +4923,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_calldata_ptr_$dyn_calldata_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" } ], - "id": 61892, + "id": 118545, "name": "_setRenewalFeeByLengths", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62676, - "src": "4536:23:95", + "referencedDeclaration": 119372, + "src": "4934:23:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$66417_calldata_ptr_$dyn_calldata_ptr_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr_$returns$__$", "typeString": "function (struct INSDomainPrice.RenewalFee calldata[] calldata)" } }, - "id": 61894, + "id": 118547, "isConstant": false, "isLValue": false, "isPure": false, @@ -4704,26 +4947,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4536:36:95", + "src": "4934:36:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61895, + "id": 118548, "nodeType": "ExpressionStatement", - "src": "4536:36:95" + "src": "4934:36:163" } ] }, "baseFunctions": [ - 66540 + 123450 ], "documentation": { - "id": 61882, + "id": 118535, "nodeType": "StructuredDocumentation", - "src": "4381:41:95", + "src": "4779:41:163", "text": " @inheritdoc INSDomainPrice" }, "functionSelector": "35feb741", @@ -4733,138 +4976,138 @@ { "arguments": [ { - "id": 61889, + "id": 118542, "name": "DEFAULT_ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48562, - "src": "4510:18:95", + "referencedDeclaration": 99838, + "src": "4908:18:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 61890, + "id": 118543, "kind": "modifierInvocation", "modifierName": { - "id": 61888, + "id": 118541, "name": "onlyRole", "nameLocations": [ - "4501:8:95" + "4899:8:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48573, - "src": "4501:8:95" + "referencedDeclaration": 99849, + "src": "4899:8:163" }, "nodeType": "ModifierInvocation", - "src": "4501:28:95" + "src": "4899:28:163" } ], "name": "setRenewalFeeByLengths", - "nameLocation": "4434:22:95", + "nameLocation": "4832:22:163", "parameters": { - "id": 61887, + "id": 118540, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61886, + "id": 118539, "mutability": "mutable", "name": "renewalFees", - "nameLocation": "4479:11:95", + "nameLocation": "4877:11:163", "nodeType": "VariableDeclaration", - "scope": 61897, - "src": "4457:33:95", + "scope": 118550, + "src": "4855:33:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_calldata_ptr_$dyn_calldata_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", "typeString": "struct INSDomainPrice.RenewalFee[]" }, "typeName": { "baseType": { - "id": 61884, + "id": 118537, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61883, + "id": 118536, "name": "RenewalFee", "nameLocations": [ - "4457:10:95" + "4855:10:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 66417, - "src": "4457:10:95" + "referencedDeclaration": 123317, + "src": "4855:10:163" }, - "referencedDeclaration": 66417, - "src": "4457:10:95", + "referencedDeclaration": 123317, + "src": "4855:10:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_storage_ptr", + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", "typeString": "struct INSDomainPrice.RenewalFee" } }, - "id": 61885, + "id": 118538, "nodeType": "ArrayTypeName", - "src": "4457:12:95", + "src": "4855:12:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_storage_$dyn_storage_ptr", + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", "typeString": "struct INSDomainPrice.RenewalFee[]" } }, "visibility": "internal" } ], - "src": "4456:35:95" + "src": "4854:35:163" }, "returnParameters": { - "id": 61891, + "id": 118544, "nodeType": "ParameterList", "parameters": [], - "src": "4530:0:95" + "src": "4928:0:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 61906, + "id": 118559, "nodeType": "FunctionDefinition", - "src": "4625:88:95", + "src": "5023:88:163", "nodes": [], "body": { - "id": 61905, + "id": 118558, "nodeType": "Block", - "src": "4686:27:95", + "src": "5084:27:163", "nodes": [], "statements": [ { "expression": { - "id": 61903, + "id": 118556, "name": "_taxRatio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61663, - "src": "4699:9:95", + "referencedDeclaration": 118311, + "src": "5097:9:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 61902, - "id": 61904, + "functionReturnParameters": 118555, + "id": 118557, "nodeType": "Return", - "src": "4692:16:95" + "src": "5090:16:163" } ] }, "baseFunctions": [ - 66546 + 123456 ], "documentation": { - "id": 61898, + "id": 118551, "nodeType": "StructuredDocumentation", - "src": "4581:41:95", + "src": "4979:41:163", "text": " @inheritdoc INSDomainPrice" }, "functionSelector": "5ef32e2c", @@ -4872,26 +5115,26 @@ "kind": "function", "modifiers": [], "name": "getTaxRatio", - "nameLocation": "4634:11:95", + "nameLocation": "5032:11:163", "parameters": { - "id": 61899, + "id": 118552, "nodeType": "ParameterList", "parameters": [], - "src": "4645:2:95" + "src": "5043:2:163" }, "returnParameters": { - "id": 61902, + "id": 118555, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61901, + "id": 118554, "mutability": "mutable", "name": "ratio", - "nameLocation": "4679:5:95", + "nameLocation": "5077:5:163", "nodeType": "VariableDeclaration", - "scope": 61906, - "src": "4671:13:95", + "scope": 118559, + "src": "5069:13:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4899,10 +5142,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61900, + "id": 118553, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4671:7:95", + "src": "5069:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4911,34 +5154,34 @@ "visibility": "internal" } ], - "src": "4670:15:95" + "src": "5068:15:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 61920, + "id": 118573, "nodeType": "FunctionDefinition", - "src": "4761:104:95", + "src": "5159:104:163", "nodes": [], "body": { - "id": 61919, + "id": 118572, "nodeType": "Block", - "src": "4835:30:95", + "src": "5233:30:163", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 61916, + "id": 118569, "name": "ratio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61909, - "src": "4854:5:95", + "referencedDeclaration": 118562, + "src": "5252:5:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4952,18 +5195,18 @@ "typeString": "uint256" } ], - "id": 61915, + "id": 118568, "name": "_setTaxRatio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62571, - "src": "4841:12:95", + "referencedDeclaration": 119267, + "src": "5239:12:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 61917, + "id": 118570, "isConstant": false, "isLValue": false, "isPure": false, @@ -4972,26 +5215,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "4841:19:95", + "src": "5239:19:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61918, + "id": 118571, "nodeType": "ExpressionStatement", - "src": "4841:19:95" + "src": "5239:19:163" } ] }, "baseFunctions": [ - 66552 + 123462 ], "documentation": { - "id": 61907, + "id": 118560, "nodeType": "StructuredDocumentation", - "src": "4717:41:95", + "src": "5115:41:163", "text": " @inheritdoc INSDomainPrice" }, "functionSelector": "fe303ebf", @@ -5001,49 +5244,49 @@ { "arguments": [ { - "id": 61912, + "id": 118565, "name": "DEFAULT_ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48562, - "src": "4815:18:95", + "referencedDeclaration": 99838, + "src": "5213:18:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 61913, + "id": 118566, "kind": "modifierInvocation", "modifierName": { - "id": 61911, + "id": 118564, "name": "onlyRole", "nameLocations": [ - "4806:8:95" + "5204:8:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48573, - "src": "4806:8:95" + "referencedDeclaration": 99849, + "src": "5204:8:163" }, "nodeType": "ModifierInvocation", - "src": "4806:28:95" + "src": "5204:28:163" } ], "name": "setTaxRatio", - "nameLocation": "4770:11:95", + "nameLocation": "5168:11:163", "parameters": { - "id": 61910, + "id": 118563, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61909, + "id": 118562, "mutability": "mutable", "name": "ratio", - "nameLocation": "4790:5:95", + "nameLocation": "5188:5:163", "nodeType": "VariableDeclaration", - "scope": 61920, - "src": "4782:13:95", + "scope": 118573, + "src": "5180:13:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5051,10 +5294,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61908, + "id": 118561, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4782:7:95", + "src": "5180:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5063,57 +5306,57 @@ "visibility": "internal" } ], - "src": "4781:15:95" + "src": "5179:15:163" }, "returnParameters": { - "id": 61914, + "id": 118567, "nodeType": "ParameterList", "parameters": [], - "src": "4835:0:95" + "src": "5233:0:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 61930, + "id": 118583, "nodeType": "FunctionDefinition", - "src": "4913:127:95", + "src": "5311:127:163", "nodes": [], "body": { - "id": 61929, + "id": 118582, "nodeType": "Block", - "src": "5009:31:95", + "src": "5407:31:163", "nodes": [], "statements": [ { "expression": { - "id": 61927, + "id": 118580, "name": "_dpDownScaler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61676, - "src": "5022:13:95", + "referencedDeclaration": 118324, + "src": "5420:13:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_storage", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", "typeString": "struct PeriodScaler storage ref" } }, - "functionReturnParameters": 61926, - "id": 61928, + "functionReturnParameters": 118579, + "id": 118581, "nodeType": "Return", - "src": "5015:20:95" + "src": "5413:20:163" } ] }, "baseFunctions": [ - 66517 + 123427 ], "documentation": { - "id": 61921, + "id": 118574, "nodeType": "StructuredDocumentation", - "src": "4869:41:95", + "src": "5267:41:163", "text": " @inheritdoc INSDomainPrice" }, "functionSelector": "39e47da7", @@ -5121,85 +5364,85 @@ "kind": "function", "modifiers": [], "name": "getScaleDownRuleForDomainPrice", - "nameLocation": "4922:30:95", + "nameLocation": "5320:30:163", "parameters": { - "id": 61922, + "id": 118575, "nodeType": "ParameterList", "parameters": [], - "src": "4952:2:95" + "src": "5350:2:163" }, "returnParameters": { - "id": 61926, + "id": 118579, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61925, + "id": 118578, "mutability": "mutable", "name": "scaleRule", - "nameLocation": "4998:9:95", + "nameLocation": "5396:9:163", "nodeType": "VariableDeclaration", - "scope": 61930, - "src": "4978:29:95", + "scope": 118583, + "src": "5376:29:163", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_memory_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_memory_ptr", "typeString": "struct PeriodScaler" }, "typeName": { - "id": 61924, + "id": 118577, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61923, + "id": 118576, "name": "PeriodScaler", "nameLocations": [ - "4978:12:95" + "5376:12:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68668, - "src": "4978:12:95" + "referencedDeclaration": 125607, + "src": "5376:12:163" }, - "referencedDeclaration": 68668, - "src": "4978:12:95", + "referencedDeclaration": 125607, + "src": "5376:12:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_storage_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", "typeString": "struct PeriodScaler" } }, "visibility": "internal" } ], - "src": "4977:31:95" + "src": "5375:31:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 61945, + "id": 118598, "nodeType": "FunctionDefinition", - "src": "5088:157:95", + "src": "5486:157:163", "nodes": [], "body": { - "id": 61944, + "id": 118597, "nodeType": "Block", - "src": "5199:46:95", + "src": "5597:46:163", "nodes": [], "statements": [ { "expression": { "arguments": [ { - "id": 61941, + "id": 118594, "name": "scaleRule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61934, - "src": "5230:9:95", + "referencedDeclaration": 118587, + "src": "5628:9:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_calldata_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", "typeString": "struct PeriodScaler calldata" } } @@ -5207,22 +5450,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_calldata_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", "typeString": "struct PeriodScaler calldata" } ], - "id": 61940, + "id": 118593, "name": "_setDomainPriceScaleRule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62592, - "src": "5205:24:95", + "referencedDeclaration": 119288, + "src": "5603:24:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$68668_calldata_ptr_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$125607_calldata_ptr_$returns$__$", "typeString": "function (struct PeriodScaler calldata)" } }, - "id": 61942, + "id": 118595, "isConstant": false, "isLValue": false, "isPure": false, @@ -5231,26 +5474,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5205:35:95", + "src": "5603:35:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61943, + "id": 118596, "nodeType": "ExpressionStatement", - "src": "5205:35:95" + "src": "5603:35:163" } ] }, "baseFunctions": [ - 66524 + 123434 ], "documentation": { - "id": 61931, + "id": 118584, "nodeType": "StructuredDocumentation", - "src": "5044:41:95", + "src": "5442:41:163", "text": " @inheritdoc INSDomainPrice" }, "functionSelector": "e229a670", @@ -5260,116 +5503,116 @@ { "arguments": [ { - "id": 61937, + "id": 118590, "name": "DEFAULT_ADMIN_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48562, - "src": "5179:18:95", + "referencedDeclaration": 99838, + "src": "5577:18:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 61938, + "id": 118591, "kind": "modifierInvocation", "modifierName": { - "id": 61936, + "id": 118589, "name": "onlyRole", "nameLocations": [ - "5170:8:95" + "5568:8:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48573, - "src": "5170:8:95" + "referencedDeclaration": 99849, + "src": "5568:8:163" }, "nodeType": "ModifierInvocation", - "src": "5170:28:95" + "src": "5568:28:163" } ], "name": "setScaleDownRuleForDomainPrice", - "nameLocation": "5097:30:95", + "nameLocation": "5495:30:163", "parameters": { - "id": 61935, + "id": 118588, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61934, + "id": 118587, "mutability": "mutable", "name": "scaleRule", - "nameLocation": "5150:9:95", + "nameLocation": "5548:9:163", "nodeType": "VariableDeclaration", - "scope": 61945, - "src": "5128:31:95", + "scope": 118598, + "src": "5526:31:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_calldata_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", "typeString": "struct PeriodScaler" }, "typeName": { - "id": 61933, + "id": 118586, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 61932, + "id": 118585, "name": "PeriodScaler", "nameLocations": [ - "5128:12:95" + "5526:12:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68668, - "src": "5128:12:95" + "referencedDeclaration": 125607, + "src": "5526:12:163" }, - "referencedDeclaration": 68668, - "src": "5128:12:95", + "referencedDeclaration": 125607, + "src": "5526:12:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_storage_ptr", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", "typeString": "struct PeriodScaler" } }, "visibility": "internal" } ], - "src": "5127:33:95" + "src": "5525:33:163" }, "returnParameters": { - "id": 61939, + "id": 118592, "nodeType": "ParameterList", "parameters": [], - "src": "5199:0:95" + "src": "5597:0:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 61972, + "id": 118625, "nodeType": "FunctionDefinition", - "src": "5293:226:95", + "src": "5691:226:163", "nodes": [], "body": { - "id": 61971, + "id": 118624, "nodeType": "Block", - "src": "5388:131:95", + "src": "5786:131:163", "nodes": [], "statements": [ { "expression": { - "id": 61959, + "id": 118612, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 61953, + "id": 118606, "name": "usdFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61951, - "src": "5394:6:95", + "referencedDeclaration": 118604, + "src": "5792:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5379,50 +5622,50 @@ "operator": "=", "rightHandSide": { "baseExpression": { - "id": 61954, + "id": 118607, "name": "_rnFeeOverriding", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61692, - "src": "5403:16:95", + "referencedDeclaration": 118340, + "src": "5801:16:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 61958, + "id": 118611, "indexExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 61955, + "id": 118608, "name": "label", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61948, - "src": "5420:5:95", + "referencedDeclaration": 118601, + "src": "5818:5:163", "typeDescriptions": { "typeIdentifier": "t_string_calldata_ptr", "typeString": "string calldata" } }, - "id": 61956, + "id": 118609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5426:9:95", + "memberLocation": "5824:9:163", "memberName": "hashLabel", "nodeType": "MemberAccess", - "referencedDeclaration": 68102, - "src": "5420:15:95", + "referencedDeclaration": 125041, + "src": "5818:15:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes32)" } }, - "id": 61957, + "id": 118610, "isConstant": false, "isLValue": false, "isPure": false, @@ -5431,7 +5674,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5420:17:95", + "src": "5818:17:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -5443,21 +5686,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5403:35:95", + "src": "5801:35:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5394:44:95", + "src": "5792:44:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 61960, + "id": 118613, "nodeType": "ExpressionStatement", - "src": "5394:44:95" + "src": "5792:44:163" }, { "condition": { @@ -5465,18 +5708,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 61963, + "id": 118616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 61961, + "id": 118614, "name": "usdFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61951, - "src": "5448:6:95", + "referencedDeclaration": 118604, + "src": "5846:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5486,46 +5729,46 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 61962, + "id": 118615, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5458:1:95", + "src": "5856:1:163", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "5448:11:95", + "src": "5846:11:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 61967, + "id": 118620, "nodeType": "IfStatement", - "src": "5444:50:95", + "src": "5842:50:163", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], - "id": 61964, + "id": 118617, "name": "RenewalFeeIsNotOverriden", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 66410, - "src": "5468:24:95", + "referencedDeclaration": 123302, + "src": "5866:24:163", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 61965, + "id": 118618, "isConstant": false, "isLValue": false, "isPure": false, @@ -5534,21 +5777,21 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5468:26:95", + "src": "5866:26:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 61966, + "id": 118619, "nodeType": "RevertStatement", - "src": "5461:33:95" + "src": "5859:33:163" } }, { "expression": { - "id": 61969, + "id": 118622, "isConstant": false, "isLValue": false, "isPure": false, @@ -5556,14 +5799,14 @@ "nodeType": "UnaryOperation", "operator": "~", "prefix": true, - "src": "5507:7:95", + "src": "5905:7:163", "subExpression": { - "id": 61968, + "id": 118621, "name": "usdFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61951, - "src": "5508:6:95", + "referencedDeclaration": 118604, + "src": "5906:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5574,20 +5817,20 @@ "typeString": "uint256" } }, - "functionReturnParameters": 61952, - "id": 61970, + "functionReturnParameters": 118605, + "id": 118623, "nodeType": "Return", - "src": "5500:14:95" + "src": "5898:14:163" } ] }, "baseFunctions": [ - 66584 + 123503 ], "documentation": { - "id": 61946, + "id": 118599, "nodeType": "StructuredDocumentation", - "src": "5249:41:95", + "src": "5647:41:163", "text": " @inheritdoc INSDomainPrice" }, "functionSelector": "5c68c830", @@ -5595,20 +5838,20 @@ "kind": "function", "modifiers": [], "name": "getOverriddenRenewalFee", - "nameLocation": "5302:23:95", + "nameLocation": "5700:23:163", "parameters": { - "id": 61949, + "id": 118602, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61948, + "id": 118601, "mutability": "mutable", "name": "label", - "nameLocation": "5342:5:95", + "nameLocation": "5740:5:163", "nodeType": "VariableDeclaration", - "scope": 61972, - "src": "5326:21:95", + "scope": 118625, + "src": "5724:21:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -5616,10 +5859,10 @@ "typeString": "string" }, "typeName": { - "id": 61947, + "id": 118600, "name": "string", "nodeType": "ElementaryTypeName", - "src": "5326:6:95", + "src": "5724:6:163", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -5628,21 +5871,21 @@ "visibility": "internal" } ], - "src": "5325:23:95" + "src": "5723:23:163" }, "returnParameters": { - "id": 61952, + "id": 118605, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61951, + "id": 118604, "mutability": "mutable", "name": "usdFee", - "nameLocation": "5380:6:95", + "nameLocation": "5778:6:163", "nodeType": "VariableDeclaration", - "scope": 61972, - "src": "5372:14:95", + "scope": 118625, + "src": "5770:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5650,10 +5893,10 @@ "typeString": "uint256" }, "typeName": { - "id": 61950, + "id": 118603, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5372:7:95", + "src": "5770:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5662,87 +5905,464 @@ "visibility": "internal" } ], - "src": "5371:16:95" + "src": "5769:16:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 62046, + "id": 118655, "nodeType": "FunctionDefinition", - "src": "5567:577:95", + "src": "5965:229:163", "nodes": [], "body": { - "id": 62045, + "id": 118654, "nodeType": "Block", - "src": "5703:441:95", + "src": "6049:145:163", "nodes": [], "statements": [ { "assignments": [ - 61986 + 118635 ], "declarations": [ { "constant": false, - "id": 61986, + "id": 118635, "mutability": "mutable", - "name": "length", - "nameLocation": "5717:6:95", + "name": "tierValue", + "nameLocation": "6061:9:163", "nodeType": "VariableDeclaration", - "scope": 62045, - "src": "5709:14:95", + "scope": 118654, + "src": "6055:15:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, "typeName": { - "id": 61985, - "name": "uint256", + "id": 118634, + "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5709:7:95", + "src": "6055:5:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "id": 118641, + "initialValue": { + "baseExpression": { + "id": 118636, + "name": "_tierOverriding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118345, + "src": "6073:15:163", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", + "typeString": "mapping(bytes32 => uint8)" + } + }, + "id": 118640, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 118637, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118628, + "src": "6089:5:163", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + "id": 118638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6095:9:163", + "memberName": "hashLabel", + "nodeType": "MemberAccess", + "referencedDeclaration": 125041, + "src": "6089:15:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes32)" + } + }, + "id": 118639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6089:17:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6073:34:163", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6055:52:163" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 118644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 118642, + "name": "tierValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118635, + "src": "6117:9:163", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 118643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6130:1:163", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6117:14:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 118648, + "nodeType": "IfStatement", + "src": "6113:47:163", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 118645, + "name": "TierIsNotOverriden", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123304, + "src": "6140:18:163", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 118646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6140:20:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 118647, + "nodeType": "RevertStatement", + "src": "6133:27:163" + } + }, + { + "expression": { + "arguments": [ + { + "id": 118651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "~", + "prefix": true, + "src": "6178:10:163", + "subExpression": { + "id": 118650, + "name": "tierValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118635, + "src": "6179:9:163", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 118649, + "name": "Tier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123312, + "src": "6173:4:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", + "typeString": "type(enum INSDomainPrice.Tier)" + } + }, + "id": 118652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6173:16:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + }, + "functionReturnParameters": 118633, + "id": 118653, + "nodeType": "Return", + "src": "6166:23:163" + } + ] + }, + "baseFunctions": [ + 123512 + ], + "documentation": { + "id": 118626, + "nodeType": "StructuredDocumentation", + "src": "5921:41:163", + "text": " @inheritdoc INSDomainPrice" + }, + "functionSelector": "7e32146a", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getOverriddenTier", + "nameLocation": "5974:17:163", + "parameters": { + "id": 118629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118628, + "mutability": "mutable", + "name": "label", + "nameLocation": "6008:5:163", + "nodeType": "VariableDeclaration", + "scope": 118655, + "src": "5992:21:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 118627, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5992:6:163", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "5991:23:163" + }, + "returnParameters": { + "id": 118633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118632, + "mutability": "mutable", + "name": "tier", + "nameLocation": "6043:4:163", + "nodeType": "VariableDeclaration", + "scope": 118655, + "src": "6038:9:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + }, + "typeName": { + "id": 118631, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118630, + "name": "Tier", + "nameLocations": [ + "6038:4:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123312, + "src": "6038:4:163" + }, + "referencedDeclaration": 123312, + "src": "6038:4:163", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + }, + "visibility": "internal" + } + ], + "src": "6037:11:163" + }, + "scope": 119626, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 118729, + "nodeType": "FunctionDefinition", + "src": "6242:577:163", + "nodes": [], + "body": { + "id": 118728, + "nodeType": "Block", + "src": "6378:441:163", + "nodes": [], + "statements": [ + { + "assignments": [ + 118669 + ], + "declarations": [ + { + "constant": false, + "id": 118669, + "mutability": "mutable", + "name": "length", + "nameLocation": "6392:6:163", + "nodeType": "VariableDeclaration", + "scope": 118728, + "src": "6384:14:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 118668, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6384:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], - "id": 61989, + "id": 118672, "initialValue": { "expression": { - "id": 61987, + "id": 118670, "name": "lbHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61976, - "src": "5726:8:95", + "referencedDeclaration": 118659, + "src": "6401:8:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 61988, + "id": 118671, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5735:6:95", + "memberLocation": "6410:6:163", "memberName": "length", "nodeType": "MemberAccess", - "src": "5726:15:95", + "src": "6401:15:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "5709:32:95" + "src": "6384:32:163" }, { "condition": { @@ -5750,7 +6370,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 61997, + "id": 118680, "isConstant": false, "isLValue": false, "isPure": false, @@ -5760,18 +6380,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 61992, + "id": 118675, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 61990, + "id": 118673, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61986, - "src": "5751:6:95", + "referencedDeclaration": 118669, + "src": "6426:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5781,21 +6401,21 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 61991, + "id": 118674, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5761:1:95", + "src": "6436:1:163", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "5751:11:95", + "src": "6426:11:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5808,18 +6428,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 61996, + "id": 118679, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 61993, + "id": 118676, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61986, - "src": "5766:6:95", + "referencedDeclaration": 118669, + "src": "6441:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5829,63 +6449,63 @@ "operator": "!=", "rightExpression": { "expression": { - "id": 61994, + "id": 118677, "name": "usdPrices", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61979, - "src": "5776:9:95", + "referencedDeclaration": 118662, + "src": "6451:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 61995, + "id": 118678, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5786:6:95", + "memberLocation": "6461:6:163", "memberName": "length", "nodeType": "MemberAccess", - "src": "5776:16:95", + "src": "6451:16:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5766:26:95", + "src": "6441:26:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "5751:41:95", + "src": "6426:41:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 62001, + "id": 118684, "nodeType": "IfStatement", - "src": "5747:74:95", + "src": "6422:74:163", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], - "id": 61998, + "id": 118681, "name": "InvalidArrayLength", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 66408, - "src": "5801:18:95", + "referencedDeclaration": 123300, + "src": "6476:18:163", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 61999, + "id": 118682, "isConstant": false, "isLValue": false, "isPure": false, @@ -5894,32 +6514,32 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5801:20:95", + "src": "6476:20:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 62000, + "id": 118683, "nodeType": "RevertStatement", - "src": "5794:27:95" + "src": "6469:27:163" } }, { "assignments": [ - 62003 + 118686 ], "declarations": [ { "constant": false, - "id": 62003, + "id": 118686, "mutability": "mutable", "name": "inverseBitwise", - "nameLocation": "5835:14:95", + "nameLocation": "6510:14:163", "nodeType": "VariableDeclaration", - "scope": 62045, - "src": "5827:22:95", + "scope": 118728, + "src": "6502:22:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5927,10 +6547,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62002, + "id": 118685, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5827:7:95", + "src": "6502:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5939,24 +6559,24 @@ "visibility": "internal" } ], - "id": 62004, + "id": 118687, "nodeType": "VariableDeclarationStatement", - "src": "5827:22:95" + "src": "6502:22:163" }, { "assignments": [ - 62006 + 118689 ], "declarations": [ { "constant": false, - "id": 62006, + "id": 118689, "mutability": "mutable", "name": "operator", - "nameLocation": "5863:8:95", + "nameLocation": "6538:8:163", "nodeType": "VariableDeclaration", - "scope": 62045, - "src": "5855:16:95", + "scope": 118728, + "src": "6530:16:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5964,10 +6584,10 @@ "typeString": "address" }, "typeName": { - "id": 62005, + "id": 118688, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5855:7:95", + "src": "6530:7:163", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5977,23 +6597,23 @@ "visibility": "internal" } ], - "id": 62009, + "id": 118692, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], - "id": 62007, + "id": 118690, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 52306, - "src": "5874:10:95", + "referencedDeclaration": 103582, + "src": "6549:10:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 62008, + "id": 118691, "isConstant": false, "isLValue": false, "isPure": false, @@ -6002,7 +6622,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5874:12:95", + "src": "6549:12:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6010,28 +6630,28 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "5855:31:95" + "src": "6530:31:163" }, { "body": { - "id": 62043, + "id": 118726, "nodeType": "Block", - "src": "5922:218:95", + "src": "6597:218:163", "statements": [ { "expression": { - "id": 62021, + "id": 118704, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 62016, + "id": 118699, "name": "inverseBitwise", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62003, - "src": "5930:14:95", + "referencedDeclaration": 118686, + "src": "6605:14:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6040,7 +6660,7 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 62020, + "id": 118703, "isConstant": false, "isLValue": false, "isPure": false, @@ -6048,28 +6668,28 @@ "nodeType": "UnaryOperation", "operator": "~", "prefix": true, - "src": "5947:13:95", + "src": "6622:13:163", "subExpression": { "baseExpression": { - "id": 62017, + "id": 118700, "name": "usdPrices", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61979, - "src": "5948:9:95", + "referencedDeclaration": 118662, + "src": "6623:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, - "id": 62019, + "id": 118702, "indexExpression": { - "id": 62018, + "id": 118701, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62011, - "src": "5958:1:95", + "referencedDeclaration": 118694, + "src": "6633:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6080,7 +6700,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5948:12:95", + "src": "6623:12:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6091,58 +6711,58 @@ "typeString": "uint256" } }, - "src": "5930:30:95", + "src": "6605:30:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 62022, + "id": 118705, "nodeType": "ExpressionStatement", - "src": "5930:30:95" + "src": "6605:30:163" }, { "expression": { - "id": 62029, + "id": 118712, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 62023, + "id": 118706, "name": "_rnFeeOverriding", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61692, - "src": "5968:16:95", + "referencedDeclaration": 118340, + "src": "6643:16:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", "typeString": "mapping(bytes32 => uint256)" } }, - "id": 62027, + "id": 118710, "indexExpression": { "baseExpression": { - "id": 62024, + "id": 118707, "name": "lbHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61976, - "src": "5985:8:95", + "referencedDeclaration": 118659, + "src": "6660:8:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 62026, + "id": 118709, "indexExpression": { - "id": 62025, + "id": 118708, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62011, - "src": "5994:1:95", + "referencedDeclaration": 118694, + "src": "6669:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6153,7 +6773,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5985:11:95", + "src": "6660:11:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6164,7 +6784,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5968:29:95", + "src": "6643:29:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6173,37 +6793,37 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 62028, + "id": 118711, "name": "inverseBitwise", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62003, - "src": "6000:14:95", + "referencedDeclaration": 118686, + "src": "6675:14:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5968:46:95", + "src": "6643:46:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 62030, + "id": 118713, "nodeType": "ExpressionStatement", - "src": "5968:46:95" + "src": "6643:46:163" }, { "eventCall": { "arguments": [ { - "id": 62032, + "id": 118715, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62006, - "src": "6055:8:95", + "referencedDeclaration": 118689, + "src": "6730:8:163", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6211,25 +6831,25 @@ }, { "baseExpression": { - "id": 62033, + "id": 118716, "name": "lbHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61976, - "src": "6065:8:95", + "referencedDeclaration": 118659, + "src": "6740:8:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 62035, + "id": 118718, "indexExpression": { - "id": 62034, + "id": 118717, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62011, - "src": "6074:1:95", + "referencedDeclaration": 118694, + "src": "6749:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6240,19 +6860,19 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6065:11:95", + "src": "6740:11:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 62036, + "id": 118719, "name": "inverseBitwise", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62003, - "src": "6078:14:95", + "referencedDeclaration": 118686, + "src": "6753:14:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6274,18 +6894,18 @@ "typeString": "uint256" } ], - "id": 62031, + "id": 118714, "name": "RenewalFeeOverridingUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 66454, - "src": "6027:27:95", + "referencedDeclaration": 123354, + "src": "6702:27:163", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$returns$__$", "typeString": "function (address,bytes32,uint256)" } }, - "id": 62037, + "id": 118720, "isConstant": false, "isLValue": false, "isPure": false, @@ -6294,25 +6914,25 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6027:66:95", + "src": "6702:66:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 62038, + "id": 118721, "nodeType": "EmitStatement", - "src": "6022:71:95" + "src": "6697:71:163" }, { - "id": 62042, + "id": 118725, "nodeType": "UncheckedBlock", - "src": "6102:32:95", + "src": "6777:32:163", "statements": [ { "expression": { - "id": 62040, + "id": 118723, "isConstant": false, "isLValue": false, "isPure": false, @@ -6320,14 +6940,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "6122:3:95", + "src": "6797:3:163", "subExpression": { - "id": 62039, + "id": 118722, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62011, - "src": "6124:1:95", + "referencedDeclaration": 118694, + "src": "6799:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6338,9 +6958,9 @@ "typeString": "uint256" } }, - "id": 62041, + "id": 118724, "nodeType": "ExpressionStatement", - "src": "6122:3:95" + "src": "6797:3:163" } ] } @@ -6351,18 +6971,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 62015, + "id": 118698, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 62013, + "id": 118696, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62011, - "src": "5909:1:95", + "referencedDeclaration": 118694, + "src": "6584:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6371,38 +6991,38 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 62014, + "id": 118697, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61986, - "src": "5913:6:95", + "referencedDeclaration": 118669, + "src": "6588:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5909:10:95", + "src": "6584:10:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 62044, + "id": 118727, "initializationExpression": { "assignments": [ - 62011 + 118694 ], "declarations": [ { "constant": false, - "id": 62011, + "id": 118694, "mutability": "mutable", "name": "i", - "nameLocation": "5906:1:95", + "nameLocation": "6581:1:163", "nodeType": "VariableDeclaration", - "scope": 62044, - "src": "5898:9:95", + "scope": 118727, + "src": "6573:9:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6410,10 +7030,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62010, + "id": 118693, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5898:7:95", + "src": "6573:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6422,22 +7042,22 @@ "visibility": "internal" } ], - "id": 62012, + "id": 118695, "nodeType": "VariableDeclarationStatement", - "src": "5898:9:95" + "src": "6573:9:163" }, "nodeType": "ForStatement", - "src": "5893:247:95" + "src": "6568:247:163" } ] }, "baseFunctions": [ - 66594 + 123522 ], "documentation": { - "id": 61973, + "id": 118656, "nodeType": "StructuredDocumentation", - "src": "5523:41:95", + "src": "6198:41:163", "text": " @inheritdoc INSDomainPrice" }, "functionSelector": "dd28776d", @@ -6447,49 +7067,49 @@ { "arguments": [ { - "id": 61982, + "id": 118665, "name": "OVERRIDER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61647, - "src": "5685:14:95", + "referencedDeclaration": 118295, + "src": "6360:14:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 61983, + "id": 118666, "kind": "modifierInvocation", "modifierName": { - "id": 61981, + "id": 118664, "name": "onlyRole", "nameLocations": [ - "5676:8:95" + "6351:8:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48573, - "src": "5676:8:95" + "referencedDeclaration": 99849, + "src": "6351:8:163" }, "nodeType": "ModifierInvocation", - "src": "5676:24:95" + "src": "6351:24:163" } ], "name": "bulkOverrideRenewalFees", - "nameLocation": "5576:23:95", + "nameLocation": "6251:23:163", "parameters": { - "id": 61980, + "id": 118663, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 61976, + "id": 118659, "mutability": "mutable", "name": "lbHashes", - "nameLocation": "5619:8:95", + "nameLocation": "6294:8:163", "nodeType": "VariableDeclaration", - "scope": 62046, - "src": "5600:27:95", + "scope": 118729, + "src": "6275:27:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -6498,18 +7118,18 @@ }, "typeName": { "baseType": { - "id": 61974, + "id": 118657, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5600:7:95", + "src": "6275:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 61975, + "id": 118658, "nodeType": "ArrayTypeName", - "src": "5600:9:95", + "src": "6275:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -6519,13 +7139,13 @@ }, { "constant": false, - "id": 61979, + "id": 118662, "mutability": "mutable", "name": "usdPrices", - "nameLocation": "5648:9:95", + "nameLocation": "6323:9:163", "nodeType": "VariableDeclaration", - "scope": 62046, - "src": "5629:28:95", + "scope": 118729, + "src": "6304:28:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -6534,18 +7154,18 @@ }, "typeName": { "baseType": { - "id": 61977, + "id": 118660, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5629:7:95", + "src": "6304:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 61978, + "id": 118661, "nodeType": "ArrayTypeName", - "src": "5629:9:95", + "src": "6304:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -6554,44 +7174,44 @@ "visibility": "internal" } ], - "src": "5599:59:95" + "src": "6274:59:163" }, "returnParameters": { - "id": 61984, + "id": 118667, "nodeType": "ParameterList", "parameters": [], - "src": "5703:0:95" + "src": "6378:0:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 62124, + "id": 118809, "nodeType": "FunctionDefinition", - "src": "6192:610:95", + "src": "6867:538:163", "nodes": [], "body": { - "id": 62123, + "id": 118808, "nodeType": "Block", - "src": "6428:374:95", + "src": "6980:425:163", "nodes": [], "statements": [ { "assignments": [ - 62069 + 118744 ], "declarations": [ { "constant": false, - "id": 62069, + "id": 118744, "mutability": "mutable", "name": "length", - "nameLocation": "6442:6:95", + "nameLocation": "6994:6:163", "nodeType": "VariableDeclaration", - "scope": 62123, - "src": "6434:14:95", + "scope": 118808, + "src": "6986:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6599,10 +7219,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62068, + "id": 118743, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6434:7:95", + "src": "6986:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6611,121 +7231,250 @@ "visibility": "internal" } ], - "id": 62076, + "id": 118747, "initialValue": { - "arguments": [ - { - "id": 62071, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62050, - "src": "6492:8:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } + "expression": { + "id": 118745, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118733, + "src": "7003:8:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 118746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7012:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "7003:15:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6986:32:163" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 118755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "id": 62072, - "name": "ronPrices", + "id": 118750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 118748, + "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62053, - "src": "6502:9:95", + "referencedDeclaration": 118744, + "src": "7028:6:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - { - "id": 62073, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62056, - "src": "6513:11:95", + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 118749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7038:1:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - { - "id": 62074, - "name": "setTypes", + "src": "7028:11:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 118754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 118751, + "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62059, - "src": "6526:8:95", + "referencedDeclaration": 118744, + "src": "7043:6:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - }, - { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 118752, + "name": "tiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118737, + "src": "7053:5:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Tier_$123312_$dyn_calldata_ptr", + "typeString": "enum INSDomainPrice.Tier[] calldata" + } }, - { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" + "id": 118753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7059:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "7053:12:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 62070, - "name": "_requireBulkSetDomainPriceArgumentsValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62489, - "src": "6451:40:95", + }, + "src": "7043:22:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_uint256_$", - "typeString": "function (bytes32[] calldata,uint256[] calldata,bytes32[] calldata,uint256[] calldata) pure returns (uint256)" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 62075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6451:84:95", - "tryCall": false, + "src": "7028:37:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, + "id": 118759, + "nodeType": "IfStatement", + "src": "7024:70:163", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 118756, + "name": "InvalidArrayLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123300, + "src": "7074:18:163", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 118757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7074:20:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 118758, + "nodeType": "RevertStatement", + "src": "7067:27:163" + } + }, + { + "assignments": [ + 118761 + ], + "declarations": [ + { + "constant": false, + "id": 118761, + "mutability": "mutable", + "name": "inverseBitwise", + "nameLocation": "7106:14:163", + "nodeType": "VariableDeclaration", + "scope": 118808, + "src": "7100:20:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 118760, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7100:5:163", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "id": 118762, "nodeType": "VariableDeclarationStatement", - "src": "6434:101:95" + "src": "7100:20:163" }, { "assignments": [ - 62078 + 118764 ], "declarations": [ { "constant": false, - "id": 62078, + "id": 118764, "mutability": "mutable", "name": "operator", - "nameLocation": "6549:8:95", + "nameLocation": "7134:8:163", "nodeType": "VariableDeclaration", - "scope": 62123, - "src": "6541:16:95", + "scope": 118808, + "src": "7126:16:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6733,10 +7482,10 @@ "typeString": "address" }, "typeName": { - "id": 62077, + "id": 118763, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6541:7:95", + "src": "7126:7:163", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6746,23 +7495,23 @@ "visibility": "internal" } ], - "id": 62081, + "id": 118767, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], - "id": 62079, + "id": 118765, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 52306, - "src": "6560:10:95", + "referencedDeclaration": 103582, + "src": "7145:10:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 62080, + "id": 118766, "isConstant": false, "isLValue": false, "isPure": false, @@ -6771,7 +7520,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "6560:12:95", + "src": "7145:12:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -6779,145 +7528,198 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "6541:31:95" + "src": "7126:31:163" }, { - "expression": { - "id": 62088, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62082, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62066, - "src": "6578:7:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 62086, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62069, - "src": "6599:6:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 62085, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "6588:10:95", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (bool[] memory)" - }, - "typeName": { - "baseType": { - "id": 62083, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "6592:4:95", + "body": { + "id": 118806, + "nodeType": "Block", + "src": "7193:208:163", + "statements": [ + { + "expression": { + "id": 118782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 118774, + "name": "inverseBitwise", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118761, + "src": "7201:14:163", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - "id": 62084, - "nodeType": "ArrayTypeName", - "src": "6592:6:95", + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 118781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "~", + "prefix": true, + "src": "7218:16:163", + "subExpression": { + "arguments": [ + { + "baseExpression": { + "id": 118777, + "name": "tiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118737, + "src": "7225:5:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Tier_$123312_$dyn_calldata_ptr", + "typeString": "enum INSDomainPrice.Tier[] calldata" + } + }, + "id": 118779, + "indexExpression": { + "id": 118778, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118769, + "src": "7231:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7225:8:163", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + ], + "id": 118776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7219:5:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 118775, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7219:5:163", + "typeDescriptions": {} + } + }, + "id": 118780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7219:15:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "7201:33:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", - "typeString": "bool[]" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } - } + }, + "id": 118783, + "nodeType": "ExpressionStatement", + "src": "7201:33:163" }, - "id": 62087, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6588:18:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, - "src": "6578:28:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, - "id": 62089, - "nodeType": "ExpressionStatement", - "src": "6578:28:95" - }, - { - "body": { - "id": 62121, - "nodeType": "Block", - "src": "6642:156:95", - "statements": [ { "expression": { - "id": 62115, + "id": 118790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { - "id": 62096, - "name": "updated", + "id": 118784, + "name": "_tierOverriding", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62066, - "src": "6650:7:95", + "referencedDeclaration": 118345, + "src": "7242:15:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", + "typeString": "mapping(bytes32 => uint8)" } }, - "id": 62098, + "id": 118788, "indexExpression": { - "id": 62097, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62091, - "src": "6658:1:95", + "baseExpression": { + "id": 118785, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118733, + "src": "7258:8:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 118787, + "indexExpression": { + "id": 118786, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118769, + "src": "7267:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7258:11:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, "isConstant": false, @@ -6925,265 +7727,180 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6650:10:95", + "src": "7242:28:163", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "arguments": [ - { - "id": 62100, - "name": "operator", + "id": 118789, + "name": "inverseBitwise", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118761, + "src": "7273:14:163", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "7242:45:163", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 118791, + "nodeType": "ExpressionStatement", + "src": "7242:45:163" + }, + { + "eventCall": { + "arguments": [ + { + "id": 118793, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118764, + "src": "7322:8:163", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 118794, + "name": "lbHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62078, - "src": "6679:8:95", + "referencedDeclaration": 118733, + "src": "7332:8:163", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" } }, - { - "baseExpression": { - "id": 62101, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62050, - "src": "6689:8:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, - "id": 62103, - "indexExpression": { - "id": 62102, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62091, - "src": "6698:1:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6689:11:95", + "id": 118796, + "indexExpression": { + "id": 118795, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118769, + "src": "7341:1:163", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - { - "baseExpression": { - "id": 62104, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62053, - "src": "6702:9:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 62106, - "indexExpression": { - "id": 62105, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62091, - "src": "6712:1:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6702:12:95", + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7332:11:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "baseExpression": { + "id": 118797, + "name": "tiers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118737, + "src": "7345:5:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_enum$_Tier_$123312_$dyn_calldata_ptr", + "typeString": "enum INSDomainPrice.Tier[] calldata" + } + }, + "id": 118799, + "indexExpression": { + "id": 118798, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118769, + "src": "7351:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - { - "baseExpression": { - "id": 62107, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62056, - "src": "6716:11:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, - "id": 62109, - "indexExpression": { - "id": 62108, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62091, - "src": "6728:1:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6716:14:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7345:8:163", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, { - "baseExpression": { - "id": 62110, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62059, - "src": "6732:8:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 62112, - "indexExpression": { - "id": 62111, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62091, - "src": "6741:1:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6732:11:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, { - "hexValue": "66616c7365", - "id": 62113, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6745:5:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 62099, - "name": "_setDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62554, - "src": "6663:15:95", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$", - "typeString": "function (address,bytes32,uint256,bytes32,uint256,bool) returns (bool)" - } - }, - "id": 62114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6663:88:95", - "tryCall": false, + "id": 118792, + "name": "TierOverridingUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123364, + "src": "7300:21:163", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_enum$_Tier_$123312_$returns$__$", + "typeString": "function (address,bytes32,enum INSDomainPrice.Tier)" } }, - "src": "6650:101:95", + "id": 118800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7300:54:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 62116, - "nodeType": "ExpressionStatement", - "src": "6650:101:95" + "id": 118801, + "nodeType": "EmitStatement", + "src": "7295:59:163" }, { - "id": 62120, + "id": 118805, "nodeType": "UncheckedBlock", - "src": "6760:32:95", + "src": "7363:32:163", "statements": [ { "expression": { - "id": 62118, + "id": 118803, "isConstant": false, "isLValue": false, "isPure": false, @@ -7191,14 +7908,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "6780:3:95", + "src": "7383:3:163", "subExpression": { - "id": 62117, + "id": 118802, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62091, - "src": "6782:1:95", + "referencedDeclaration": 118769, + "src": "7385:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7209,9 +7926,9 @@ "typeString": "uint256" } }, - "id": 62119, + "id": 118804, "nodeType": "ExpressionStatement", - "src": "6780:3:95" + "src": "7383:3:163" } ] } @@ -7222,18 +7939,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 62095, + "id": 118773, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 62093, + "id": 118771, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62091, - "src": "6629:1:95", + "referencedDeclaration": 118769, + "src": "7180:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7242,38 +7959,38 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 62094, + "id": 118772, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62069, - "src": "6633:6:95", + "referencedDeclaration": 118744, + "src": "7184:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6629:10:95", + "src": "7180:10:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 62122, + "id": 118807, "initializationExpression": { "assignments": [ - 62091 + 118769 ], "declarations": [ { "constant": false, - "id": 62091, + "id": 118769, "mutability": "mutable", "name": "i", - "nameLocation": "6626:1:95", + "nameLocation": "7177:1:163", "nodeType": "VariableDeclaration", - "scope": 62122, - "src": "6618:9:95", + "scope": 118807, + "src": "7169:9:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7281,10 +7998,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62090, + "id": 118768, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6618:7:95", + "src": "7169:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7293,146 +8010,74 @@ "visibility": "internal" } ], - "id": 62092, + "id": 118770, "nodeType": "VariableDeclarationStatement", - "src": "6618:9:95" + "src": "7169:9:163" }, "nodeType": "ForStatement", - "src": "6613:185:95" + "src": "7164:237:163" } ] }, "baseFunctions": [ - 66613 + 123533 ], "documentation": { - "id": 62047, + "id": 118730, "nodeType": "StructuredDocumentation", - "src": "6148:41:95", + "src": "6823:41:163", "text": " @inheritdoc INSDomainPrice" }, - "functionSelector": "53faf909", + "functionSelector": "59228107", "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { - "id": 62062, - "name": "OPERATOR_ROLE", + "id": 118740, + "name": "OVERRIDER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61641, - "src": "6381:13:95", + "referencedDeclaration": 118295, + "src": "6964:14:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 62063, + "id": 118741, "kind": "modifierInvocation", "modifierName": { - "id": 62061, + "id": 118739, "name": "onlyRole", "nameLocations": [ - "6372:8:95" + "6955:8:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48573, - "src": "6372:8:95" + "referencedDeclaration": 99849, + "src": "6955:8:163" }, "nodeType": "ModifierInvocation", - "src": "6372:23:95" + "src": "6955:24:163" } ], - "name": "bulkTrySetDomainPrice", - "nameLocation": "6201:21:95", + "name": "bulkOverrideTiers", + "nameLocation": "6876:17:163", "parameters": { - "id": 62060, + "id": 118738, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62050, + "id": 118733, "mutability": "mutable", "name": "lbHashes", - "nameLocation": "6247:8:95", - "nodeType": "VariableDeclaration", - "scope": 62124, - "src": "6228:27:95", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 62048, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6228:7:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 62049, - "nodeType": "ArrayTypeName", - "src": "6228:9:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62053, - "mutability": "mutable", - "name": "ronPrices", - "nameLocation": "6280:9:95", - "nodeType": "VariableDeclaration", - "scope": 62124, - "src": "6261:28:95", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 62051, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6261:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62052, - "nodeType": "ArrayTypeName", - "src": "6261:9:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62056, - "mutability": "mutable", - "name": "proofHashes", - "nameLocation": "6314:11:95", + "nameLocation": "6913:8:163", "nodeType": "VariableDeclaration", - "scope": 62124, - "src": "6295:30:95", + "scope": 118809, + "src": "6894:27:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -7441,18 +8086,18 @@ }, "typeName": { "baseType": { - "id": 62054, + "id": 118731, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6295:7:95", + "src": "6894:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 62055, + "id": 118732, "nodeType": "ArrayTypeName", - "src": "6295:9:95", + "src": "6894:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -7462,116 +8107,89 @@ }, { "constant": false, - "id": 62059, + "id": 118737, "mutability": "mutable", - "name": "setTypes", - "nameLocation": "6350:8:95", + "name": "tiers", + "nameLocation": "6939:5:163", "nodeType": "VariableDeclaration", - "scope": 62124, - "src": "6331:27:95", + "scope": 118809, + "src": "6923:21:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" + "typeIdentifier": "t_array$_t_enum$_Tier_$123312_$dyn_calldata_ptr", + "typeString": "enum INSDomainPrice.Tier[]" }, "typeName": { "baseType": { - "id": 62057, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6331:7:95", + "id": 118735, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118734, + "name": "Tier", + "nameLocations": [ + "6923:4:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123312, + "src": "6923:4:163" + }, + "referencedDeclaration": 123312, + "src": "6923:4:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" } }, - "id": 62058, + "id": 118736, "nodeType": "ArrayTypeName", - "src": "6331:9:95", + "src": "6923:6:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" + "typeIdentifier": "t_array$_t_enum$_Tier_$123312_$dyn_storage_ptr", + "typeString": "enum INSDomainPrice.Tier[]" } }, "visibility": "internal" } ], - "src": "6222:140:95" + "src": "6893:52:163" }, "returnParameters": { - "id": 62067, + "id": 118742, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62066, - "mutability": "mutable", - "name": "updated", - "nameLocation": "6419:7:95", - "nodeType": "VariableDeclaration", - "scope": 62124, - "src": "6405:21:95", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[]" - }, - "typeName": { - "baseType": { - "id": 62064, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "6405:4:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 62065, - "nodeType": "ArrayTypeName", - "src": "6405:6:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", - "typeString": "bool[]" - } - }, - "visibility": "internal" - } - ], - "src": "6404:23:95" + "parameters": [], + "src": "6980:0:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 62187, + "id": 118887, "nodeType": "FunctionDefinition", - "src": "6850:527:95", + "src": "7453:610:163", "nodes": [], "body": { - "id": 62186, + "id": 118886, "nodeType": "Block", - "src": "7052:325:95", + "src": "7689:374:163", "nodes": [], "statements": [ { "assignments": [ - 62144 + 118832 ], "declarations": [ { "constant": false, - "id": 62144, + "id": 118832, "mutability": "mutable", "name": "length", - "nameLocation": "7066:6:95", + "nameLocation": "7703:6:163", "nodeType": "VariableDeclaration", - "scope": 62186, - "src": "7058:14:95", + "scope": 118886, + "src": "7695:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7579,10 +8197,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62143, + "id": 118831, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7058:7:95", + "src": "7695:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7591,52 +8209,52 @@ "visibility": "internal" } ], - "id": 62151, + "id": 118839, "initialValue": { "arguments": [ { - "id": 62146, + "id": 118834, "name": "lbHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62128, - "src": "7116:8:95", + "referencedDeclaration": 118813, + "src": "7753:8:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, { - "id": 62147, + "id": 118835, "name": "ronPrices", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62131, - "src": "7126:9:95", + "referencedDeclaration": 118816, + "src": "7763:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" } }, { - "id": 62148, + "id": 118836, "name": "proofHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62134, - "src": "7137:11:95", + "referencedDeclaration": 118819, + "src": "7774:11:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, { - "id": 62149, + "id": 118837, "name": "setTypes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62137, - "src": "7150:8:95", + "referencedDeclaration": 118822, + "src": "7787:8:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", "typeString": "uint256[] calldata" @@ -7662,18 +8280,18 @@ "typeString": "uint256[] calldata" } ], - "id": 62145, + "id": 118833, "name": "_requireBulkSetDomainPriceArgumentsValid", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62489, - "src": "7075:40:95", + "referencedDeclaration": 119185, + "src": "7712:40:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_uint256_$", "typeString": "function (bytes32[] calldata,uint256[] calldata,bytes32[] calldata,uint256[] calldata) pure returns (uint256)" } }, - "id": 62150, + "id": 118838, "isConstant": false, "isLValue": false, "isPure": false, @@ -7682,7 +8300,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7075:84:95", + "src": "7712:84:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -7690,22 +8308,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "7058:101:95" + "src": "7695:101:163" }, { "assignments": [ - 62153 + 118841 ], "declarations": [ { "constant": false, - "id": 62153, + "id": 118841, "mutability": "mutable", "name": "operator", - "nameLocation": "7173:8:95", + "nameLocation": "7810:8:163", "nodeType": "VariableDeclaration", - "scope": 62186, - "src": "7165:16:95", + "scope": 118886, + "src": "7802:16:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7713,10 +8331,10 @@ "typeString": "address" }, "typeName": { - "id": 62152, + "id": 118840, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7165:7:95", + "src": "7802:7:163", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7726,23 +8344,23 @@ "visibility": "internal" } ], - "id": 62156, + "id": 118844, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], - "id": 62154, + "id": 118842, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 52306, - "src": "7184:10:95", + "referencedDeclaration": 103582, + "src": "7821:10:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 62155, + "id": 118843, "isConstant": false, "isLValue": false, "isPure": false, @@ -7751,7 +8369,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7184:12:95", + "src": "7821:12:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7759,260 +8377,411 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "7165:31:95" + "src": "7802:31:163" }, { - "body": { - "id": 62184, - "nodeType": "Block", - "src": "7232:141:95", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 62164, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62153, - "src": "7256:8:95", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "baseExpression": { - "id": 62165, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62128, - "src": "7266:8:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, - "id": 62167, - "indexExpression": { - "id": 62166, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62158, - "src": "7275:1:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7266:11:95", + "expression": { + "id": 118851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 118845, + "name": "updated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118829, + "src": "7839:7:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", + "typeString": "bool[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 118849, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118832, + "src": "7860:6:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 118848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "7849:10:163", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (bool[] memory)" + }, + "typeName": { + "baseType": { + "id": 118846, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7853:4:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 118847, + "nodeType": "ArrayTypeName", + "src": "7853:6:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", + "typeString": "bool[]" + } + } + }, + "id": 118850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7849:18:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", + "typeString": "bool[] memory" + } + }, + "src": "7839:28:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", + "typeString": "bool[] memory" + } + }, + "id": 118852, + "nodeType": "ExpressionStatement", + "src": "7839:28:163" + }, + { + "body": { + "id": 118884, + "nodeType": "Block", + "src": "7903:156:163", + "statements": [ + { + "expression": { + "id": 118878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 118859, + "name": "updated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118829, + "src": "7911:7:163", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", + "typeString": "bool[] memory" } }, - { - "baseExpression": { - "id": 62168, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62131, - "src": "7279:9:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 62170, - "indexExpression": { - "id": 62169, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62158, - "src": "7289:1:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7279:12:95", + "id": 118861, + "indexExpression": { + "id": 118860, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "7919:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - { - "baseExpression": { - "id": 62171, - "name": "proofHashes", + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7911:10:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 118863, + "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62134, - "src": "7293:11:95", + "referencedDeclaration": 118841, + "src": "7940:8:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 62173, - "indexExpression": { - "id": 62172, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62158, - "src": "7305:1:95", + { + "baseExpression": { + "id": 118864, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118813, + "src": "7950:8:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 118866, + "indexExpression": { + "id": 118865, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "7959:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7950:11:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7293:14:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { - "id": 62174, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62137, - "src": "7309:8:95", + { + "baseExpression": { + "id": 118867, + "name": "ronPrices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118816, + "src": "7963:9:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 118869, + "indexExpression": { + "id": 118868, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "7973:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7963:12:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62176, - "indexExpression": { - "id": 62175, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62158, - "src": "7318:1:95", + { + "baseExpression": { + "id": 118870, + "name": "proofHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118819, + "src": "7977:11:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 118872, + "indexExpression": { + "id": 118871, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "7989:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7977:14:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7309:11:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "74727565", - "id": 62177, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7322:4:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "baseExpression": { + "id": 118873, + "name": "setTypes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118822, + "src": "7993:8:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 118875, + "indexExpression": { + "id": 118874, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "8002:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7993:11:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, { - "typeIdentifier": "t_bool", - "typeString": "bool" + "hexValue": "66616c7365", + "id": 118876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8006:5:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" } ], - "id": 62163, - "name": "_setDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62554, - "src": "7240:15:95", + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 118862, + "name": "_setDomainPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119250, + "src": "7924:15:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$", + "typeString": "function (address,bytes32,uint256,bytes32,uint256,bool) returns (bool)" + } + }, + "id": 118877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7924:88:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$", - "typeString": "function (address,bytes32,uint256,bytes32,uint256,bool) returns (bool)" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 62178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7240:87:95", - "tryCall": false, + "src": "7911:101:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 62179, + "id": 118879, "nodeType": "ExpressionStatement", - "src": "7240:87:95" + "src": "7911:101:163" }, { - "id": 62183, + "id": 118883, "nodeType": "UncheckedBlock", - "src": "7335:32:95", + "src": "8021:32:163", "statements": [ { "expression": { - "id": 62181, + "id": 118881, "isConstant": false, "isLValue": false, "isPure": false, @@ -8020,14 +8789,14 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, - "src": "7355:3:95", + "src": "8041:3:163", "subExpression": { - "id": 62180, + "id": 118880, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62158, - "src": "7357:1:95", + "referencedDeclaration": 118854, + "src": "8043:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8038,9 +8807,9 @@ "typeString": "uint256" } }, - "id": 62182, + "id": 118882, "nodeType": "ExpressionStatement", - "src": "7355:3:95" + "src": "8041:3:163" } ] } @@ -8051,18 +8820,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 62162, + "id": 118858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 62160, + "id": 118856, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62158, - "src": "7219:1:95", + "referencedDeclaration": 118854, + "src": "7890:1:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8071,38 +8840,38 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { - "id": 62161, + "id": 118857, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62144, - "src": "7223:6:95", + "referencedDeclaration": 118832, + "src": "7894:6:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7219:10:95", + "src": "7890:10:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 62185, + "id": 118885, "initializationExpression": { "assignments": [ - 62158 + 118854 ], "declarations": [ { "constant": false, - "id": 62158, + "id": 118854, "mutability": "mutable", "name": "i", - "nameLocation": "7216:1:95", + "nameLocation": "7887:1:163", "nodeType": "VariableDeclaration", - "scope": 62185, - "src": "7208:9:95", + "scope": 118885, + "src": "7879:9:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8110,10 +8879,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62157, + "id": 118853, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7208:7:95", + "src": "7879:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8122,74 +8891,74 @@ "visibility": "internal" } ], - "id": 62159, + "id": 118855, "nodeType": "VariableDeclarationStatement", - "src": "7208:9:95" + "src": "7879:9:163" }, "nodeType": "ForStatement", - "src": "7203:170:95" + "src": "7874:185:163" } ] }, "baseFunctions": [ - 66629 + 123552 ], "documentation": { - "id": 62125, + "id": 118810, "nodeType": "StructuredDocumentation", - "src": "6806:41:95", + "src": "7409:41:163", "text": " @inheritdoc INSDomainPrice" }, - "functionSelector": "599eaabf", + "functionSelector": "53faf909", "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { - "id": 62140, - "name": "OVERRIDER_ROLE", + "id": 118825, + "name": "OPERATOR_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61647, - "src": "7036:14:95", + "referencedDeclaration": 118289, + "src": "7642:13:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "id": 62141, + "id": 118826, "kind": "modifierInvocation", "modifierName": { - "id": 62139, + "id": 118824, "name": "onlyRole", "nameLocations": [ - "7027:8:95" + "7633:8:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48573, - "src": "7027:8:95" + "referencedDeclaration": 99849, + "src": "7633:8:163" }, "nodeType": "ModifierInvocation", - "src": "7027:24:95" + "src": "7633:23:163" } ], - "name": "bulkSetDomainPrice", - "nameLocation": "6859:18:95", + "name": "bulkTrySetDomainPrice", + "nameLocation": "7462:21:163", "parameters": { - "id": 62138, + "id": 118823, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62128, + "id": 118813, "mutability": "mutable", "name": "lbHashes", - "nameLocation": "6902:8:95", + "nameLocation": "7508:8:163", "nodeType": "VariableDeclaration", - "scope": 62187, - "src": "6883:27:95", + "scope": 118887, + "src": "7489:27:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -8198,18 +8967,18 @@ }, "typeName": { "baseType": { - "id": 62126, + "id": 118811, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6883:7:95", + "src": "7489:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 62127, + "id": 118812, "nodeType": "ArrayTypeName", - "src": "6883:9:95", + "src": "7489:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -8219,13 +8988,13 @@ }, { "constant": false, - "id": 62131, + "id": 118816, "mutability": "mutable", "name": "ronPrices", - "nameLocation": "6935:9:95", + "nameLocation": "7541:9:163", "nodeType": "VariableDeclaration", - "scope": 62187, - "src": "6916:28:95", + "scope": 118887, + "src": "7522:28:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -8234,18 +9003,18 @@ }, "typeName": { "baseType": { - "id": 62129, + "id": 118814, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6916:7:95", + "src": "7522:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 62130, + "id": 118815, "nodeType": "ArrayTypeName", - "src": "6916:9:95", + "src": "7522:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -8255,13 +9024,13 @@ }, { "constant": false, - "id": 62134, + "id": 118819, "mutability": "mutable", "name": "proofHashes", - "nameLocation": "6969:11:95", + "nameLocation": "7575:11:163", "nodeType": "VariableDeclaration", - "scope": 62187, - "src": "6950:30:95", + "scope": 118887, + "src": "7556:30:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -8270,18 +9039,18 @@ }, "typeName": { "baseType": { - "id": 62132, + "id": 118817, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6950:7:95", + "src": "7556:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 62133, + "id": 118818, "nodeType": "ArrayTypeName", - "src": "6950:9:95", + "src": "7556:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -8291,13 +9060,13 @@ }, { "constant": false, - "id": 62137, + "id": 118822, "mutability": "mutable", "name": "setTypes", - "nameLocation": "7005:8:95", + "nameLocation": "7611:8:163", "nodeType": "VariableDeclaration", - "scope": 62187, - "src": "6986:27:95", + "scope": 118887, + "src": "7592:27:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -8306,18 +9075,18 @@ }, "typeName": { "baseType": { - "id": 62135, + "id": 118820, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6986:7:95", + "src": "7592:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 62136, + "id": 118821, "nodeType": "ArrayTypeName", - "src": "6986:9:95", + "src": "7592:9:163", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -8326,451 +9095,1196 @@ "visibility": "internal" } ], - "src": "6877:140:95" + "src": "7483:140:163" }, "returnParameters": { - "id": 62142, + "id": 118830, "nodeType": "ParameterList", - "parameters": [], - "src": "7052:0:95" + "parameters": [ + { + "constant": false, + "id": 118829, + "mutability": "mutable", + "name": "updated", + "nameLocation": "7680:7:163", + "nodeType": "VariableDeclaration", + "scope": 118887, + "src": "7666:21:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", + "typeString": "bool[]" + }, + "typeName": { + "baseType": { + "id": 118827, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7666:4:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 118828, + "nodeType": "ArrayTypeName", + "src": "7666:6:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", + "typeString": "bool[]" + } + }, + "visibility": "internal" + } + ], + "src": "7665:23:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 62212, + "id": 118950, "nodeType": "FunctionDefinition", - "src": "7425:200:95", + "src": "8111:527:163", "nodes": [], "body": { - "id": 62211, + "id": 118949, "nodeType": "Block", - "src": "7527:98:95", + "src": "8313:325:163", "nodes": [], "statements": [ { - "expression": { - "id": 62203, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62197, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62193, - "src": "7533:8:95", + "assignments": [ + 118907 + ], + "declarations": [ + { + "constant": false, + "id": 118907, + "mutability": "mutable", + "name": "length", + "nameLocation": "8327:6:163", + "nodeType": "VariableDeclaration", + "scope": 118949, + "src": "8319:14:163", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 62199, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62190, - "src": "7560:5:95", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "id": 62200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7566:9:95", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 68102, - "src": "7560:15:95", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (bytes32)" - } - }, - "id": 62201, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7560:17:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } + }, + "typeName": { + "id": 118906, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8319:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 62198, - "name": "_getDomainPrice", + }, + "visibility": "internal" + } + ], + "id": 118914, + "initialValue": { + "arguments": [ + { + "id": 118909, + "name": "lbHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62750, - "src": "7544:15:95", + "referencedDeclaration": 118891, + "src": "8377:8:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" } }, - "id": 62202, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7544:34:95", - "tryCall": false, + { + "id": 118910, + "name": "ronPrices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118894, + "src": "8387:9:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + { + "id": 118911, + "name": "proofHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118897, + "src": "8398:11:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + { + "id": 118912, + "name": "setTypes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118900, + "src": "8411:8:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + ], + "id": 118908, + "name": "_requireBulkSetDomainPriceArgumentsValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119185, + "src": "8336:40:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_uint256_$", + "typeString": "function (bytes32[] calldata,uint256[] calldata,bytes32[] calldata,uint256[] calldata) pure returns (uint256)" } }, - "src": "7533:45:95", + "id": 118913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8336:84:163", + "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 62204, - "nodeType": "ExpressionStatement", - "src": "7533:45:95" + "nodeType": "VariableDeclarationStatement", + "src": "8319:101:163" }, { - "expression": { - "id": 62209, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62205, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62195, - "src": "7584:8:95", + "assignments": [ + 118916 + ], + "declarations": [ + { + "constant": false, + "id": 118916, + "mutability": "mutable", + "name": "operator", + "nameLocation": "8434:8:163", + "nodeType": "VariableDeclaration", + "scope": 118949, + "src": "8426:16:163", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 62207, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62193, - "src": "7611:8:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 62206, - "name": "convertUSDToRON", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62416, - "src": "7595:15:95", + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 118915, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8426:7:163", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 62208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7595:25:95", - "tryCall": false, + "visibility": "internal" + } + ], + "id": 118919, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 118917, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103582, + "src": "8445:10:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" } }, - "src": "7584:36:95", + "id": 118918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8445:12:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 62210, - "nodeType": "ExpressionStatement", - "src": "7584:36:95" - } - ] - }, - "baseFunctions": [ - 66562 - ], - "documentation": { - "id": 62188, - "nodeType": "StructuredDocumentation", - "src": "7381:41:95", - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "713a69a7", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getDomainPrice", - "nameLocation": "7434:14:95", - "parameters": { - "id": 62191, - "nodeType": "ParameterList", - "parameters": [ + "nodeType": "VariableDeclarationStatement", + "src": "8426:31:163" + }, { - "constant": false, - "id": 62190, - "mutability": "mutable", - "name": "label", - "nameLocation": "7463:5:95", - "nodeType": "VariableDeclaration", - "scope": 62212, - "src": "7449:19:95", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 62189, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "7449:6:95", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "7448:21:95" - }, - "returnParameters": { - "id": 62196, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62193, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "7499:8:95", - "nodeType": "VariableDeclaration", - "scope": 62212, - "src": "7491:16:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "body": { + "id": 118947, + "nodeType": "Block", + "src": "8493:141:163", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 118927, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118916, + "src": "8517:8:163", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 118928, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118891, + "src": "8527:8:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 118930, + "indexExpression": { + "id": 118929, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8536:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8527:11:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "baseExpression": { + "id": 118931, + "name": "ronPrices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118894, + "src": "8540:9:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 118933, + "indexExpression": { + "id": 118932, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8550:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8540:12:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 118934, + "name": "proofHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118897, + "src": "8554:11:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" + } + }, + "id": 118936, + "indexExpression": { + "id": 118935, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8566:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8554:14:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "baseExpression": { + "id": 118937, + "name": "setTypes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118900, + "src": "8570:8:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 118939, + "indexExpression": { + "id": 118938, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8579:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8570:11:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "74727565", + "id": 118940, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8583:4:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 118926, + "name": "_setDomainPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119250, + "src": "8501:15:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$", + "typeString": "function (address,bytes32,uint256,bytes32,uint256,bool) returns (bool)" + } + }, + "id": 118941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8501:87:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 118942, + "nodeType": "ExpressionStatement", + "src": "8501:87:163" + }, + { + "id": 118946, + "nodeType": "UncheckedBlock", + "src": "8596:32:163", + "statements": [ + { + "expression": { + "id": 118944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "8616:3:163", + "subExpression": { + "id": 118943, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8618:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 118945, + "nodeType": "ExpressionStatement", + "src": "8616:3:163" + } + ] + } + ] }, - "typeName": { - "id": 62192, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7491:7:95", - "typeDescriptions": { + "condition": { + "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62195, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "7517:8:95", + }, + "id": 118925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 118923, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8480:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 118924, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118907, + "src": "8484:6:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8480:10:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 118948, + "initializationExpression": { + "assignments": [ + 118921 + ], + "declarations": [ + { + "constant": false, + "id": 118921, + "mutability": "mutable", + "name": "i", + "nameLocation": "8477:1:163", + "nodeType": "VariableDeclaration", + "scope": 118948, + "src": "8469:9:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 118920, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8469:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 118922, + "nodeType": "VariableDeclarationStatement", + "src": "8469:9:163" + }, + "nodeType": "ForStatement", + "src": "8464:170:163" + } + ] + }, + "baseFunctions": [ + 123568 + ], + "documentation": { + "id": 118888, + "nodeType": "StructuredDocumentation", + "src": "8067:41:163", + "text": " @inheritdoc INSDomainPrice" + }, + "functionSelector": "599eaabf", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 118903, + "name": "OVERRIDER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118295, + "src": "8297:14:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 118904, + "kind": "modifierInvocation", + "modifierName": { + "id": 118902, + "name": "onlyRole", + "nameLocations": [ + "8288:8:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 99849, + "src": "8288:8:163" + }, + "nodeType": "ModifierInvocation", + "src": "8288:24:163" + } + ], + "name": "bulkSetDomainPrice", + "nameLocation": "8120:18:163", + "parameters": { + "id": 118901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118891, + "mutability": "mutable", + "name": "lbHashes", + "nameLocation": "8163:8:163", "nodeType": "VariableDeclaration", - "scope": 62212, - "src": "7509:16:95", + "scope": 118950, + "src": "8144:27:163", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" }, "typeName": { - "id": 62194, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7509:7:95", + "baseType": { + "id": 118889, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8144:7:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 118890, + "nodeType": "ArrayTypeName", + "src": "8144:9:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 118894, + "mutability": "mutable", + "name": "ronPrices", + "nameLocation": "8196:9:163", + "nodeType": "VariableDeclaration", + "scope": 118950, + "src": "8177:28:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 118892, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8177:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 118893, + "nodeType": "ArrayTypeName", + "src": "8177:9:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 118897, + "mutability": "mutable", + "name": "proofHashes", + "nameLocation": "8230:11:163", + "nodeType": "VariableDeclaration", + "scope": 118950, + "src": "8211:30:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 118895, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8211:7:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 118896, + "nodeType": "ArrayTypeName", + "src": "8211:9:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 118900, + "mutability": "mutable", + "name": "setTypes", + "nameLocation": "8266:8:163", + "nodeType": "VariableDeclaration", + "scope": 118950, + "src": "8247:27:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 118898, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8247:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 118899, + "nodeType": "ArrayTypeName", + "src": "8247:9:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" } }, "visibility": "internal" } ], - "src": "7490:36:95" + "src": "8138:140:163" }, - "scope": 62751, - "stateMutability": "view", + "returnParameters": { + "id": 118905, + "nodeType": "ParameterList", + "parameters": [], + "src": "8313:0:163" + }, + "scope": 119626, + "stateMutability": "nonpayable", "virtual": false, - "visibility": "public" + "visibility": "external" }, { - "id": 62386, + "id": 118975, "nodeType": "FunctionDefinition", - "src": "7673:1367:95", + "src": "8686:200:163", "nodes": [], "body": { - "id": 62385, + "id": 118974, "nodeType": "Block", - "src": "7820:1220:95", + "src": "8788:98:163", "nodes": [], "statements": [ { - "assignments": [ - 62227 - ], - "declarations": [ - { - "constant": false, - "id": 62227, - "mutability": "mutable", - "name": "nameLen", - "nameLocation": "7834:7:95", - "nodeType": "VariableDeclaration", - "scope": 62385, - "src": "7826:15:95", - "stateVariable": false, - "storageLocation": "default", + "expression": { + "id": 118966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 118960, + "name": "usdPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118956, + "src": "8794:8:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - }, - "typeName": { - "id": 62226, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7826:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 62231, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 62228, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62215, - "src": "7844:5:95", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 118962, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118953, + "src": "8821:5:163", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 118963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8827:9:163", + "memberName": "hashLabel", + "nodeType": "MemberAccess", + "referencedDeclaration": 125041, + "src": "8821:15:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes32)" + } + }, + "id": 118964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8821:17:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 118961, + "name": "_getDomainPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119625, + "src": "8805:15:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) view returns (uint256)" } }, - "id": 62229, + "id": 118965, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberLocation": "7850:6:95", - "memberName": "strlen", - "nodeType": "MemberAccess", - "referencedDeclaration": 68220, - "src": "7844:12:95", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8805:34:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (uint256)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62230, + "src": "8794:45:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 118967, + "nodeType": "ExpressionStatement", + "src": "8794:45:163" + }, + { + "expression": { + "id": 118972, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7844:14:95", - "tryCall": false, + "leftHandSide": { + "id": 118968, + "name": "ronPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118958, + "src": "8845:8:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 118970, + "name": "usdPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118956, + "src": "8872:8:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 118969, + "name": "convertUSDToRON", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119112, + "src": "8856:15:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 118971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8856:25:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8845:36:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "VariableDeclarationStatement", - "src": "7826:32:95" + "id": 118973, + "nodeType": "ExpressionStatement", + "src": "8845:36:163" + } + ] + }, + "baseFunctions": [ + 123472 + ], + "documentation": { + "id": 118951, + "nodeType": "StructuredDocumentation", + "src": "8642:41:163", + "text": " @inheritdoc INSDomainPrice" + }, + "functionSelector": "713a69a7", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDomainPrice", + "nameLocation": "8695:14:163", + "parameters": { + "id": 118954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118953, + "mutability": "mutable", + "name": "label", + "nameLocation": "8724:5:163", + "nodeType": "VariableDeclaration", + "scope": 118975, + "src": "8710:19:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 118952, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8710:6:163", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "8709:21:163" + }, + "returnParameters": { + "id": 118959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118956, + "mutability": "mutable", + "name": "usdPrice", + "nameLocation": "8760:8:163", + "nodeType": "VariableDeclaration", + "scope": 118975, + "src": "8752:16:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 118955, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8752:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" }, + { + "constant": false, + "id": 118958, + "mutability": "mutable", + "name": "ronPrice", + "nameLocation": "8778:8:163", + "nodeType": "VariableDeclaration", + "scope": 118975, + "src": "8770:16:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 118957, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8770:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8751:36:163" + }, + "scope": 119626, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 119045, + "nodeType": "FunctionDefinition", + "src": "8934:631:163", + "nodes": [], + "body": { + "id": 119044, + "nodeType": "Block", + "src": "9004:561:163", + "nodes": [], + "statements": [ { "assignments": [ - 62233 + 118985 ], "declarations": [ { "constant": false, - "id": 62233, + "id": 118985, "mutability": "mutable", "name": "lbHash", - "nameLocation": "7872:6:95", + "nameLocation": "9018:6:163", "nodeType": "VariableDeclaration", - "scope": 62385, - "src": "7864:14:95", + "scope": 119044, + "src": "9010:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8778,10 +10292,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 62232, + "id": 118984, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "7864:7:95", + "src": "9010:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8790,39 +10304,39 @@ "visibility": "internal" } ], - "id": 62237, + "id": 118989, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { - "id": 62234, + "id": 118986, "name": "label", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62215, - "src": "7881:5:95", + "referencedDeclaration": 118978, + "src": "9027:5:163", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, - "id": 62235, + "id": 118987, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "7887:9:95", + "memberLocation": "9033:9:163", "memberName": "hashLabel", "nodeType": "MemberAccess", - "referencedDeclaration": 68102, - "src": "7881:15:95", + "referencedDeclaration": 125041, + "src": "9027:15:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes32)" } }, - "id": 62236, + "id": 118988, "isConstant": false, "isLValue": false, "isPure": false, @@ -8831,7 +10345,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7881:17:95", + "src": "9027:17:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -8839,63 +10353,63 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "7864:34:95" + "src": "9010:34:163" }, { "assignments": [ - 62239 + 118991 ], "declarations": [ { "constant": false, - "id": 62239, + "id": 118991, "mutability": "mutable", - "name": "overriddenRenewalFee", - "nameLocation": "7912:20:95", + "name": "overriddenTier", + "nameLocation": "9056:14:163", "nodeType": "VariableDeclaration", - "scope": 62385, - "src": "7904:28:95", + "scope": 119044, + "src": "9050:20:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, "typeName": { - "id": 62238, - "name": "uint256", + "id": 118990, + "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "7904:7:95", + "src": "9050:5:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "visibility": "internal" } ], - "id": 62243, + "id": 118995, "initialValue": { "baseExpression": { - "id": 62240, - "name": "_rnFeeOverriding", + "id": 118992, + "name": "_tierOverriding", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61692, - "src": "7935:16:95", + "referencedDeclaration": 118345, + "src": "9073:15:163", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", + "typeString": "mapping(bytes32 => uint8)" } }, - "id": 62242, + "id": 118994, "indexExpression": { - "id": 62241, + "id": 118993, "name": "lbHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62233, - "src": "7952:6:95", + "referencedDeclaration": 118985, + "src": "9089:6:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8906,1936 +10420,2054 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7935:24:95", + "src": "9073:23:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "7904:55:95" + "src": "9050:46:163" }, { "condition": { "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "id": 62246, + "id": 118998, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 62244, - "name": "overriddenRenewalFee", + "id": 118996, + "name": "overriddenTier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62239, - "src": "7970:20:95", + "referencedDeclaration": 118991, + "src": "9107:14:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "hexValue": "30", - "id": 62245, + "id": 118997, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7994:1:95", + "src": "9125:1:163", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "7970:25:95", + "src": "9107:19:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "falseBody": { - "id": 62365, - "nodeType": "Block", - "src": "8066:877:95", - "statements": [ - { - "assignments": [ - 62258 - ], - "declarations": [ - { - "constant": false, - "id": 62258, - "mutability": "mutable", - "name": "renewalFeeByLength", - "nameLocation": "8082:18:95", - "nodeType": "VariableDeclaration", - "scope": 62365, - "src": "8074:26:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62257, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8074:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 62266, - "initialValue": { - "baseExpression": { - "id": 62259, - "name": "_rnFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61681, - "src": "8103:6:95", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 62265, - "indexExpression": { - "arguments": [ - { - "id": 62262, - "name": "nameLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62227, - "src": "8119:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 62263, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61666, - "src": "8128:13:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 62260, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53557, - "src": "8110:4:95", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Math_$53557_$", - "typeString": "type(library Math)" - } - }, - "id": 62261, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8115:3:95", - "memberName": "min", - "nodeType": "MemberAccess", - "referencedDeclaration": 52734, - "src": "8110:8:95", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 62264, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8110:32:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8103:40:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8074:69:95" - }, - { - "expression": { - "id": 62273, + "id": 119004, + "nodeType": "IfStatement", + "src": "9103:53:163", + "trueBody": { + "expression": { + "arguments": [ + { + "id": 119001, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 62267, - "name": "basePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62221, - "src": "8151:9:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$66422_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 62269, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "8161:3:95", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 66419, - "src": "8151:13:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 62270, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62217, - "src": "8167:8:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 62271, - "name": "renewalFeeByLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62258, - "src": "8178:18:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8167:29:95", + "nodeType": "UnaryOperation", + "operator": "~", + "prefix": true, + "src": "9140:15:163", + "subExpression": { + "id": 119000, + "name": "overriddenTier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118991, + "src": "9141:14:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - "src": "8151:45:95", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } - }, - "id": 62274, - "nodeType": "ExpressionStatement", - "src": "8151:45:95" - }, - { - "assignments": [ - 62276 - ], - "declarations": [ + } + ], + "expression": { + "argumentTypes": [ { - "constant": false, - "id": 62276, - "mutability": "mutable", - "name": "id", - "nameLocation": "8212:2:95", - "nodeType": "VariableDeclaration", - "scope": 62365, - "src": "8204:10:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62275, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8204:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } ], - "id": 62283, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 62279, - "name": "LibRNSDomain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68113, - "src": "8235:12:95", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibRNSDomain_$68113_$", - "typeString": "type(library LibRNSDomain)" - } - }, - "id": 62280, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "8248:6:95", - "memberName": "RON_ID", - "nodeType": "MemberAccess", - "referencedDeclaration": 68076, - "src": "8235:19:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 62281, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62215, - "src": "8256:5:95", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 62277, - "name": "LibRNSDomain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68113, - "src": "8217:12:95", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibRNSDomain_$68113_$", - "typeString": "type(library LibRNSDomain)" - } - }, - "id": 62278, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8230:4:95", - "memberName": "toId", - "nodeType": "MemberAccess", - "referencedDeclaration": 68092, - "src": "8217:17:95", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (uint256,string memory) pure returns (uint256)" - } - }, - "id": 62282, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8217:45:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "id": 118999, + "name": "Tier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123312, + "src": "9135:4:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", + "typeString": "type(enum INSDomainPrice.Tier)" + } + }, + "id": 119002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9135:21:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + }, + "functionReturnParameters": 118983, + "id": 119003, + "nodeType": "Return", + "src": "9128:28:163" + } + }, + { + "assignments": [ + 119007, + null, + null + ], + "declarations": [ + { + "constant": false, + "id": 119007, + "mutability": "mutable", + "name": "yearlyRenewalFeeByLength", + "nameLocation": "9181:24:163", + "nodeType": "VariableDeclaration", + "scope": 119044, + "src": "9164:41:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + }, + "typeName": { + "id": 119006, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119005, + "name": "UnitPrice", + "nameLocations": [ + "9164:9:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123322, + "src": "9164:9:163" }, - "nodeType": "VariableDeclarationStatement", - "src": "8204:58:95" + "referencedDeclaration": 123322, + "src": "9164:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + } }, + "visibility": "internal" + }, + null, + null + ], + "id": 119012, + "initialValue": { + "arguments": [ { - "assignments": [ - 62286 - ], - "declarations": [ + "id": 119009, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118978, + "src": "9238:5:163", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "hexValue": "333635", + "id": 119010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9255:8:163", + "subdenomination": "days", + "typeDescriptions": { + "typeIdentifier": "t_rational_31536000_by_1", + "typeString": "int_const 31536000" + }, + "value": "365" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_rational_31536000_by_1", + "typeString": "int_const 31536000" + } + ], + "id": 119008, + "name": "_tryGetRenewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119583, + "src": "9211:17:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_bytes4_$", + "typeString": "function (string memory,uint256) view returns (struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory,bytes4)" + } + }, + "id": 119011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "9231:5:163", + "9245:8:163" + ], + "names": [ + "label", + "duration" + ], + "nodeType": "FunctionCall", + "src": "9211:55:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_bytes4_$", + "typeString": "tuple(struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory,bytes4)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9163:103:163" + }, + { + "assignments": [ + 119014 + ], + "declarations": [ + { + "constant": false, + "id": 119014, + "mutability": "mutable", + "name": "tierValue", + "nameLocation": "9280:9:163", + "nodeType": "VariableDeclaration", + "scope": 119044, + "src": "9272:17:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119013, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9272:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119023, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 119015, + "name": "yearlyRenewalFeeByLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119007, + "src": "9292:24:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" + } + }, + "id": 119016, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9317:3:163", + "memberName": "usd", + "nodeType": "MemberAccess", + "referencedDeclaration": 123319, + "src": "9292:28:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ { - "constant": false, - "id": 62286, - "mutability": "mutable", - "name": "auction", - "nameLocation": "8281:7:95", - "nodeType": "VariableDeclaration", - "scope": 62365, - "src": "8270:18:95", - "stateVariable": false, - "storageLocation": "default", + "id": 119018, + "name": "lbHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118985, + "src": "9339:6:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", - "typeString": "contract INSAuction" - }, - "typeName": { - "id": 62285, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62284, - "name": "INSAuction", - "nameLocations": [ - "8270:10:95" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 66400, - "src": "8270:10:95" - }, - "referencedDeclaration": 66400, - "src": "8270:10:95", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", - "typeString": "contract INSAuction" - } - }, - "visibility": "internal" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } } ], - "id": 62288, - "initialValue": { - "id": 62287, - "name": "_auction", + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 119017, + "name": "_getDomainPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61660, - "src": "8291:8:95", + "referencedDeclaration": 119625, + "src": "9323:15:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", - "typeString": "contract INSAuction" + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) view returns (uint256)" } }, - "nodeType": "VariableDeclarationStatement", - "src": "8270:29:95" + "id": 119019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9323:23:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "condition": { - "arguments": [ - { - "id": 62291, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62276, - "src": "8328:2:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 62289, - "name": "auction", + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 119020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9349:1:163", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "9323:27:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9292:58:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9272:78:163" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119024, + "name": "tierValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119014, + "src": "9361:9:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 119025, + "name": "TIER_1_FROM_EXCLUDED_THRESHOLD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118271, + "src": "9373:30:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9361:42:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119031, + "name": "tierValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119014, + "src": "9447:9:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 119032, + "name": "TIER_2_FROM_EXCLUDED_THRESHOLD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118275, + "src": "9459:30:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9447:42:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 119041, + "nodeType": "Block", + "src": "9529:32:163", + "statements": [ + { + "expression": { + "expression": { + "id": 119038, + "name": "Tier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62286, - "src": "8311:7:95", + "referencedDeclaration": 123312, + "src": "9544:4:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", - "typeString": "contract INSAuction" + "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", + "typeString": "type(enum INSDomainPrice.Tier)" } }, - "id": 62290, + "id": 119039, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, "lValueRequested": false, - "memberLocation": "8319:8:95", - "memberName": "reserved", + "memberLocation": "9549:5:163", + "memberName": "Tier3", "nodeType": "MemberAccess", - "referencedDeclaration": 66302, - "src": "8311:16:95", + "referencedDeclaration": 123311, + "src": "9544:10:163", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view external returns (bool)" + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + }, + "functionReturnParameters": 118983, + "id": 119040, + "nodeType": "Return", + "src": "9537:17:163" + } + ] + }, + "id": 119042, + "nodeType": "IfStatement", + "src": "9443:118:163", + "trueBody": { + "id": 119037, + "nodeType": "Block", + "src": "9491:32:163", + "statements": [ + { + "expression": { + "expression": { + "id": 119034, + "name": "Tier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123312, + "src": "9506:4:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", + "typeString": "type(enum INSDomainPrice.Tier)" + } + }, + "id": 119035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9511:5:163", + "memberName": "Tier2", + "nodeType": "MemberAccess", + "referencedDeclaration": 123310, + "src": "9506:10:163", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + }, + "functionReturnParameters": 118983, + "id": 119036, + "nodeType": "Return", + "src": "9499:17:163" + } + ] + } + }, + "id": 119043, + "nodeType": "IfStatement", + "src": "9357:204:163", + "trueBody": { + "id": 119030, + "nodeType": "Block", + "src": "9405:32:163", + "statements": [ + { + "expression": { + "expression": { + "id": 119027, + "name": "Tier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123312, + "src": "9420:4:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", + "typeString": "type(enum INSDomainPrice.Tier)" } }, - "id": 62292, + "id": 119028, "isConstant": false, "isLValue": false, - "isPure": false, - "kind": "functionCall", + "isPure": true, "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8311:20:95", - "tryCall": false, + "memberLocation": "9425:5:163", + "memberName": "Tier1", + "nodeType": "MemberAccess", + "referencedDeclaration": 123309, + "src": "9420:10:163", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" } }, - "id": 62364, - "nodeType": "IfStatement", - "src": "8307:630:95", - "trueBody": { - "id": 62363, - "nodeType": "Block", - "src": "8333:604:95", - "statements": [ - { - "assignments": [ - 62295 - ], - "declarations": [ - { - "constant": false, - "id": 62295, - "mutability": "mutable", - "name": "rns", - "nameLocation": "8354:3:95", - "nodeType": "VariableDeclaration", - "scope": 62363, - "src": "8343:14:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$67046", - "typeString": "contract INSUnified" - }, - "typeName": { - "id": 62294, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62293, - "name": "INSUnified", - "nameLocations": [ - "8343:10:95" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 67046, - "src": "8343:10:95" - }, - "referencedDeclaration": 67046, - "src": "8343:10:95", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$67046", - "typeString": "contract INSUnified" - } - }, - "visibility": "internal" - } - ], - "id": 62299, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 62296, - "name": "auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62286, - "src": "8360:7:95", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", - "typeString": "contract INSAuction" - } - }, - "id": 62297, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8368:13:95", - "memberName": "getRNSUnified", - "nodeType": "MemberAccess", - "referencedDeclaration": 66399, - "src": "8360:21:95", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_INSUnified_$67046_$", - "typeString": "function () view external returns (contract INSUnified)" - } - }, - "id": 62298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8360:23:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$67046", - "typeString": "contract INSUnified" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8343:40:95" - }, - { - "assignments": [ - 62301 - ], - "declarations": [ - { - "constant": false, - "id": 62301, - "mutability": "mutable", - "name": "expiry", - "nameLocation": "8401:6:95", - "nodeType": "VariableDeclaration", - "scope": 62363, - "src": "8393:14:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62300, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8393:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 62317, - "initialValue": { - "arguments": [ - { - "expression": { - "expression": { - "arguments": [ - { - "id": 62306, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62276, - "src": "8455:2:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 62304, - "name": "rns", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62295, - "src": "8441:3:95", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$67046", - "typeString": "contract INSUnified" - } - }, - "id": 62305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8445:9:95", - "memberName": "getRecord", - "nodeType": "MemberAccess", - "referencedDeclaration": 66975, - "src": "8441:13:95", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Record_$66859_memory_ptr_$", - "typeString": "function (uint256) view external returns (struct INSUnified.Record memory)" - } - }, - "id": 62307, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8441:17:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Record_$66859_memory_ptr", - "typeString": "struct INSUnified.Record memory" - } - }, - "id": 62308, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8459:3:95", - "memberName": "mut", - "nodeType": "MemberAccess", - "referencedDeclaration": 66858, - "src": "8441:21:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_MutableRecord_$66852_memory_ptr", - "typeString": "struct INSUnified.MutableRecord memory" - } - }, - "id": 62309, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8463:6:95", - "memberName": "expiry", - "nodeType": "MemberAccess", - "referencedDeclaration": 66849, - "src": "8441:28:95", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 62310, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62217, - "src": "8471:8:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "arguments": [ - { - "id": 62313, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8486:6:95", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 62312, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "8486:6:95", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - } - ], - "id": 62311, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "8481:4:95", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 62314, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8481:12:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint64", - "typeString": "type(uint64)" - } - }, - "id": 62315, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "8494:3:95", - "memberName": "max", - "nodeType": "MemberAccess", - "src": "8481:16:95", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "id": 62302, - "name": "LibSafeRange", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68657, - "src": "8410:12:95", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibSafeRange_$68657_$", - "typeString": "type(library LibSafeRange)" - } - }, - "id": 62303, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8423:17:95", - "memberName": "addWithUpperbound", - "nodeType": "MemberAccess", - "referencedDeclaration": 68656, - "src": "8410:30:95", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 62316, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8410:88:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8393:105:95" - }, + "functionReturnParameters": 118983, + "id": 119029, + "nodeType": "Return", + "src": "9413:17:163" + } + ] + } + } + ] + }, + "baseFunctions": [ + 123495 + ], + "documentation": { + "id": 118976, + "nodeType": "StructuredDocumentation", + "src": "8890:41:163", + "text": " @inheritdoc INSDomainPrice" + }, + "functionSelector": "dfef64da", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTier", + "nameLocation": "8943:7:163", + "parameters": { + "id": 118979, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118978, + "mutability": "mutable", + "name": "label", + "nameLocation": "8965:5:163", + "nodeType": "VariableDeclaration", + "scope": 119045, + "src": "8951:19:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 118977, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8951:6:163", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "8950:21:163" + }, + "returnParameters": { + "id": 118983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118982, + "mutability": "mutable", + "name": "tier", + "nameLocation": "8998:4:163", + "nodeType": "VariableDeclaration", + "scope": 119045, + "src": "8993:9:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + }, + "typeName": { + "id": 118981, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118980, + "name": "Tier", + "nameLocations": [ + "8993:4:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123312, + "src": "8993:4:163" + }, + "referencedDeclaration": 123312, + "src": "8993:4:163", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + }, + "visibility": "internal" + } + ], + "src": "8992:11:163" + }, + "scope": 119626, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 119082, + "nodeType": "FunctionDefinition", + "src": "9613:396:163", + "nodes": [], + "body": { + "id": 119081, + "nodeType": "Block", + "src": "9760:249:163", + "nodes": [], + "statements": [ + { + "assignments": [ + 119060 + ], + "declarations": [ + { + "constant": false, + "id": 119060, + "mutability": "mutable", + "name": "revertReason", + "nameLocation": "9773:12:163", + "nodeType": "VariableDeclaration", + "scope": 119081, + "src": "9766:19:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 119059, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9766:6:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "id": 119061, + "nodeType": "VariableDeclarationStatement", + "src": "9766:19:163" + }, + { + "expression": { + "id": 119070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 119062, + "name": "basePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119054, + "src": "9792:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" + } + }, + { + "id": 119063, + "name": "tax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119057, + "src": "9803:3:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" + } + }, + { + "id": 119064, + "name": "revertReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119060, + "src": "9808:12:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "id": 119065, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "9791:30:163", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_bytes4_$", + "typeString": "tuple(struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory,bytes4)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 119067, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119048, + "src": "9842:5:163", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 119068, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119050, + "src": "9849:8:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119066, + "name": "_tryGetRenewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119583, + "src": "9824:17:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_bytes4_$", + "typeString": "function (string memory,uint256) view returns (struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory,bytes4)" + } + }, + "id": 119069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9824:34:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_bytes4_$", + "typeString": "tuple(struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory,bytes4)" + } + }, + "src": "9791:67:163", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 119071, + "nodeType": "ExpressionStatement", + "src": "9791:67:163" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 119077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119072, + "name": "revertReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119060, + "src": "9868:12:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "307830", + "id": 119075, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9891:3:163", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 119074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9884:6:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 119073, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "9884:6:163", + "typeDescriptions": {} + } + }, + "id": 119076, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9884:11:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "9868:27:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 119080, + "nodeType": "IfStatement", + "src": "9864:141:163", + "trueBody": { + "id": 119079, + "nodeType": "Block", + "src": "9897:108:163", + "statements": [ + { + "AST": { + "nativeSrc": "9930:69:163", + "nodeType": "YulBlock", + "src": "9930:69:163", + "statements": [ { - "assignments": [ - 62322, - null - ], - "declarations": [ - { - "constant": false, - "id": 62322, - "mutability": "mutable", - "name": "domainAuction", - "nameLocation": "8541:13:95", - "nodeType": "VariableDeclaration", - "scope": 62363, - "src": "8509:45:95", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DomainAuction_$66210_memory_ptr", - "typeString": "struct INSAuction.DomainAuction" - }, - "typeName": { - "id": 62321, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62320, - "name": "INSAuction.DomainAuction", - "nameLocations": [ - "8509:10:95", - "8520:13:95" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 66210, - "src": "8509:24:95" - }, - "referencedDeclaration": 66210, - "src": "8509:24:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DomainAuction_$66210_storage_ptr", - "typeString": "struct INSAuction.DomainAuction" - } - }, - "visibility": "internal" - }, - null - ], - "id": 62327, - "initialValue": { + "expression": { "arguments": [ - { - "id": 62325, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62276, - "src": "8578:2:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 62323, - "name": "auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62286, - "src": "8559:7:95", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", - "typeString": "contract INSAuction" - } - }, - "id": 62324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8567:10:95", - "memberName": "getAuction", - "nodeType": "MemberAccess", - "referencedDeclaration": 66358, - "src": "8559:18:95", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_DomainAuction_$66210_memory_ptr_$_t_uint256_$", - "typeString": "function (uint256) view external returns (struct INSAuction.DomainAuction memory,uint256)" - } - }, - "id": 62326, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8559:22:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_DomainAuction_$66210_memory_ptr_$_t_uint256_$", - "typeString": "tuple(struct INSAuction.DomainAuction memory,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8508:73:95" - }, - { - "assignments": [ - 62329 - ], - "declarations": [ - { - "constant": false, - "id": 62329, - "mutability": "mutable", - "name": "claimedAt", - "nameLocation": "8599:9:95", - "nodeType": "VariableDeclaration", - "scope": 62363, - "src": "8591:17:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62328, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8591:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 62333, - "initialValue": { - "expression": { - "expression": { - "id": 62330, - "name": "domainAuction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62322, - "src": "8611:13:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DomainAuction_$66210_memory_ptr", - "typeString": "struct INSAuction.DomainAuction memory" - } - }, - "id": 62331, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8625:3:95", - "memberName": "bid", - "nodeType": "MemberAccess", - "referencedDeclaration": 66209, - "src": "8611:17:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bid_$66202_memory_ptr", - "typeString": "struct INSAuction.Bid memory" + { + "kind": "number", + "nativeSrc": "9947:3:163", + "nodeType": "YulLiteral", + "src": "9947:3:163", + "type": "", + "value": "0x0" + }, + { + "name": "revertReason", + "nativeSrc": "9952:12:163", + "nodeType": "YulIdentifier", + "src": "9952:12:163" } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9940:6:163", + "nodeType": "YulIdentifier", + "src": "9940:6:163" }, - "id": 62332, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8629:9:95", - "memberName": "claimedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 66201, - "src": "8611:27:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nativeSrc": "9940:25:163", + "nodeType": "YulFunctionCall", + "src": "9940:25:163" }, - "nodeType": "VariableDeclarationStatement", - "src": "8591:47:95" + "nativeSrc": "9940:25:163", + "nodeType": "YulExpressionStatement", + "src": "9940:25:163" }, { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 62344, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62336, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 62334, - "name": "claimedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62329, - "src": "8652:9:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 62335, - "isConstant": false, - "isLValue": false, - "isPure": true, + "expression": { + "arguments": [ + { "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8665:1:95", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "8652:14:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62343, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 62337, - "name": "expiry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62301, - "src": "8670:6:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 62338, - "name": "claimedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62329, - "src": "8679:9:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8670:18:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 62340, - "name": "auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62286, - "src": "8691:7:95", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$66400", - "typeString": "contract INSAuction" - } - }, - "id": 62341, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8699:25:95", - "memberName": "MAX_AUCTION_DOMAIN_EXPIRY", - "nodeType": "MemberAccess", - "referencedDeclaration": 66266, - "src": "8691:33:95", - "typeDescriptions": { - "typeIdentifier": "t_function_external_pure$__$returns$_t_uint64_$", - "typeString": "function () pure external returns (uint64)" - } - }, - "id": 62342, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8691:35:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } + "nativeSrc": "9981:3:163", + "nodeType": "YulLiteral", + "src": "9981:3:163", + "type": "", + "value": "0x0" }, - "src": "8670:56:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + { + "kind": "number", + "nativeSrc": "9986:4:163", + "nodeType": "YulLiteral", + "src": "9986:4:163", + "type": "", + "value": "0x04" } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9974:6:163", + "nodeType": "YulIdentifier", + "src": "9974:6:163" }, - "src": "8652:74:95", + "nativeSrc": "9974:17:163", + "nodeType": "YulFunctionCall", + "src": "9974:17:163" + }, + "nativeSrc": "9974:17:163", + "nodeType": "YulExpressionStatement", + "src": "9974:17:163" + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 119060, + "isOffset": false, + "isSlot": false, + "src": "9952:12:163", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 119078, + "nodeType": "InlineAssembly", + "src": "9905:94:163" + } + ] + } + } + ] + }, + "baseFunctions": [ + 123486 + ], + "documentation": { + "id": 119046, + "nodeType": "StructuredDocumentation", + "src": "9569:41:163", + "text": " @inheritdoc INSDomainPrice" + }, + "functionSelector": "f4651f49", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRenewalFee", + "nameLocation": "9622:13:163", + "parameters": { + "id": 119051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119048, + "mutability": "mutable", + "name": "label", + "nameLocation": "9650:5:163", + "nodeType": "VariableDeclaration", + "scope": 119082, + "src": "9636:19:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 119047, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9636:6:163", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119050, + "mutability": "mutable", + "name": "duration", + "nameLocation": "9665:8:163", + "nodeType": "VariableDeclaration", + "scope": 119082, + "src": "9657:16:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9657:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9635:39:163" + }, + "returnParameters": { + "id": 119058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119054, + "mutability": "mutable", + "name": "basePrice", + "nameLocation": "9725:9:163", + "nodeType": "VariableDeclaration", + "scope": 119082, + "src": "9708:26:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + }, + "typeName": { + "id": 119053, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119052, + "name": "UnitPrice", + "nameLocations": [ + "9708:9:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123322, + "src": "9708:9:163" + }, + "referencedDeclaration": 123322, + "src": "9708:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119057, + "mutability": "mutable", + "name": "tax", + "nameLocation": "9753:3:163", + "nodeType": "VariableDeclaration", + "scope": 119082, + "src": "9736:20:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + }, + "typeName": { + "id": 119056, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119055, + "name": "UnitPrice", + "nameLocations": [ + "9736:9:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123322, + "src": "9736:9:163" + }, + "referencedDeclaration": 123322, + "src": "9736:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + } + }, + "visibility": "internal" + } + ], + "src": "9707:50:163" + }, + "scope": 119626, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 119112, + "nodeType": "FunctionDefinition", + "src": "10057:286:163", + "nodes": [], + "body": { + "id": 119111, + "nodeType": "Block", + "src": "10135:208:163", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 119100, + "name": "usdWei", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119085, + "src": "10254:6:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 119105, + "name": "USD_DECIMALS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118279, + "src": "10294:12:163", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" } + ], + "id": 119104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10287:6:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" }, - "id": 62349, - "nodeType": "IfStatement", - "src": "8648:137:95", - "trueBody": { - "id": 62348, - "nodeType": "Block", - "src": "8728:57:95", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 62345, - "name": "ExceedAuctionDomainExpiry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 66412, - "src": "8747:25:95", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 62346, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8747:27:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62347, - "nodeType": "RevertStatement", - "src": "8740:34:95" - } - ] + "typeName": { + "id": 119103, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "10287:6:163", + "typeDescriptions": {} } }, - { - "expression": { - "id": 62361, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 62350, - "name": "tax", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62224, - "src": "8855:3:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$66422_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 62352, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "8859:3:95", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 66419, - "src": "8855:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 62355, - "name": "_taxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61663, - "src": "8877:9:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "arguments": [ - { - "id": 62357, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62233, - "src": "8904:6:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 62356, - "name": "_getDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62750, - "src": "8888:15:95", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" - } - }, - "id": 62358, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8888:23:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 62359, - "name": "MAX_PERCENTAGE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61635, - "src": "8913:14:95", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "id": 62353, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53557, - "src": "8865:4:95", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Math_$53557_$", - "typeString": "type(library Math)" - } - }, - "id": 62354, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8870:6:95", - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 52905, - "src": "8865:11:95", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 62360, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8865:63:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8855:73:95", + "id": 119106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10287:20:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 119102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10281:5:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int32_$", + "typeString": "type(int32)" + }, + "typeName": { + "id": 119101, + "name": "int32", + "nodeType": "ElementaryTypeName", + "src": "10281:5:163", + "typeDescriptions": {} + } + }, + "id": 119107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10281:27:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + { + "hexValue": "3138", + "id": 119108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10329:2:163", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_int32", + "typeString": "int32" + }, + { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + } + ], + "expression": { + "arguments": [ + { + "id": 119097, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "10227:3:163", + "subExpression": { + "hexValue": "3138", + "id": 119096, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10228:2:163", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_18_by_1", + "typeString": "int_const -18" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_18_by_1", + "typeString": "int_const -18" + } + ], + "expression": { + "arguments": [ + { + "id": 119092, + "name": "_pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118320, + "src": "10174:16:163", "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 119093, + "name": "_maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118317, + "src": "10192:17:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { "typeIdentifier": "t_uint256", "typeString": "uint256" } + ], + "expression": { + "id": 119090, + "name": "_pyth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118304, + "src": "10148:5:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + } }, - "id": 62362, - "nodeType": "ExpressionStatement", - "src": "8855:73:95" + "id": 119091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10154:19:163", + "memberName": "getPriceNoOlderThan", + "nodeType": "MemberAccess", + "referencedDeclaration": 106052, + "src": "10148:25:163", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$106153_memory_ptr_$", + "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" + } + }, + "id": 119094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10148:62:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", + "typeString": "struct PythStructs.Price memory" } - ] + }, + "id": 119095, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10211:7:163", + "memberName": "inverse", + "nodeType": "MemberAccess", + "referencedDeclaration": 126386, + "src": "10148:70:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_int32_$returns$_t_struct$_Price_$106153_memory_ptr_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", + "typeString": "function (struct PythStructs.Price memory,int32) pure returns (struct PythStructs.Price memory)" + } + }, + "id": 119098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "10221:4:163" + ], + "names": [ + "expo" + ], + "nodeType": "FunctionCall", + "src": "10148:85:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", + "typeString": "struct PythStructs.Price memory" } + }, + "id": 119099, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10234:3:163", + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 126278, + "src": "10148:89:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", + "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" } - ] + }, + "id": 119109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "10246:6:163", + "10268:11:163", + "10316:11:163" + ], + "names": [ + "inpWei", + "inpDecimals", + "outDecimals" + ], + "nodeType": "FunctionCall", + "src": "10148:190:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 119089, + "id": 119110, + "nodeType": "Return", + "src": "10141:197:163" + } + ] + }, + "baseFunctions": [ + 123576 + ], + "documentation": { + "id": 119083, + "nodeType": "StructuredDocumentation", + "src": "10013:41:163", + "text": " @inheritdoc INSDomainPrice" + }, + "functionSelector": "7174026e", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "convertUSDToRON", + "nameLocation": "10066:15:163", + "parameters": { + "id": 119086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119085, + "mutability": "mutable", + "name": "usdWei", + "nameLocation": "10090:6:163", + "nodeType": "VariableDeclaration", + "scope": 119112, + "src": "10082:14:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10082:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10081:16:163" + }, + "returnParameters": { + "id": 119089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119088, + "mutability": "mutable", + "name": "ronWei", + "nameLocation": "10127:6:163", + "nodeType": "VariableDeclaration", + "scope": 119112, + "src": "10119:14:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 62366, - "nodeType": "IfStatement", - "src": "7966:977:95", - "trueBody": { - "id": 62256, - "nodeType": "Block", - "src": "7997:63:95", - "statements": [ + "typeName": { + "id": 119087, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10119:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10118:16:163" + }, + "scope": 119626, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 119138, + "nodeType": "FunctionDefinition", + "src": "10391:263:163", + "nodes": [], + "body": { + "id": 119137, + "nodeType": "Block", + "src": "10469:185:163", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ { - "expression": { - "id": 62254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 62247, - "name": "basePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62221, - "src": "8005:9:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$66422_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 62249, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "8015:3:95", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 66419, - "src": "8005:13:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 62250, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62217, - "src": "8021:8:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 62252, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, - "src": "8032:21:95", - "subExpression": { - "id": 62251, - "name": "overriddenRenewalFee", + "id": 119126, + "name": "ronWei", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119115, + "src": "10565:6:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "3138", + "id": 119127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10592:2:163", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 119132, + "name": "USD_DECIMALS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62239, - "src": "8033:20:95", + "referencedDeclaration": 118279, + "src": "10628:12:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } - }, + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 119131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10621:6:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 119130, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "10621:6:163", + "typeDescriptions": {} } }, - "src": "8021:32:95", + "id": 119133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10621:20:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint32", + "typeString": "uint32" } - }, - "src": "8005:48:95", + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 119129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10615:5:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_type$_t_int32_$", + "typeString": "type(int32)" + }, + "typeName": { + "id": 119128, + "name": "int32", + "nodeType": "ElementaryTypeName", + "src": "10615:5:163", + "typeDescriptions": {} } }, - "id": 62255, - "nodeType": "ExpressionStatement", - "src": "8005:48:95" - } - ] - } - }, - { - "expression": { - "id": 62374, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 62367, - "name": "tax", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62224, - "src": "8949:3:95", + "id": 119134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10615:27:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$66422_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" + "typeIdentifier": "t_int32", + "typeString": "int32" } - }, - "id": 62369, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "8953:3:95", - "memberName": "ron", - "nodeType": "MemberAccess", - "referencedDeclaration": 66421, - "src": "8949:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ + ], + "expression": { + "argumentTypes": [ { - "expression": { - "id": 62371, - "name": "tax", + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + ], + "expression": { + "arguments": [ + { + "id": 119122, + "name": "_pythIdForRONUSD", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62224, - "src": "8975:3:95", + "referencedDeclaration": 118320, + "src": "10508:16:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$66422_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - "id": 62372, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8979:3:95", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 66419, - "src": "8975:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "id": 119123, + "name": "_maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118317, + "src": "10526:17:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 62370, - "name": "convertUSDToRON", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62416, - "src": "8959:15:95", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" - } - }, - "id": 62373, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8959:24:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8949:34:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62375, - "nodeType": "ExpressionStatement", - "src": "8949:34:95" - }, - { - "expression": { - "id": 62383, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 62376, - "name": "basePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62221, - "src": "8989:9:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$66422_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 62378, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "8999:3:95", - "memberName": "ron", - "nodeType": "MemberAccess", - "referencedDeclaration": 66421, - "src": "8989:13:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], "expression": { - "id": 62380, - "name": "basePrice", + "id": 119120, + "name": "_pyth", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62221, - "src": "9021:9:95", + "referencedDeclaration": 118304, + "src": "10482:5:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$66422_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" } }, - "id": 62381, + "id": 119121, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9031:3:95", - "memberName": "usd", + "memberLocation": "10488:19:163", + "memberName": "getPriceNoOlderThan", "nodeType": "MemberAccess", - "referencedDeclaration": 66419, - "src": "9021:13:95", + "referencedDeclaration": 106052, + "src": "10482:25:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$106153_memory_ptr_$", + "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" } - ], - "id": 62379, - "name": "convertUSDToRON", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62416, - "src": "9005:15:95", + }, + "id": 119124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10482:62:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" + "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", + "typeString": "struct PythStructs.Price memory" } }, - "id": 62382, + "id": 119125, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9005:30:95", - "tryCall": false, + "memberLocation": "10545:3:163", + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 126278, + "src": "10482:66:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", + "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" } }, - "src": "8989:46:95", + "id": 119135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "10557:6:163", + "10579:11:163", + "10602:11:163" + ], + "names": [ + "inpWei", + "inpDecimals", + "outDecimals" + ], + "nodeType": "FunctionCall", + "src": "10482:167:163", + "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 62384, - "nodeType": "ExpressionStatement", - "src": "8989:46:95" + "functionReturnParameters": 119119, + "id": 119136, + "nodeType": "Return", + "src": "10475:174:163" } ] }, "baseFunctions": [ - 66576 + 123584 ], "documentation": { - "id": 62213, + "id": 119113, "nodeType": "StructuredDocumentation", - "src": "7629:41:95", + "src": "10347:41:163", "text": " @inheritdoc INSDomainPrice" }, - "functionSelector": "f4651f49", + "functionSelector": "037f1769", "implemented": true, "kind": "function", "modifiers": [], - "name": "getRenewalFee", - "nameLocation": "7682:13:95", + "name": "convertRONToUSD", + "nameLocation": "10400:15:163", "parameters": { - "id": 62218, + "id": 119116, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62215, - "mutability": "mutable", - "name": "label", - "nameLocation": "7710:5:95", - "nodeType": "VariableDeclaration", - "scope": 62386, - "src": "7696:19:95", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 62214, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "7696:6:95", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62217, + "id": 119115, "mutability": "mutable", - "name": "duration", - "nameLocation": "7725:8:95", + "name": "ronWei", + "nameLocation": "10424:6:163", "nodeType": "VariableDeclaration", - "scope": 62386, - "src": "7717:16:95", + "scope": 119138, + "src": "10416:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10843,10 +12475,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62216, + "id": 119114, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7717:7:95", + "src": "10416:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10855,519 +12487,612 @@ "visibility": "internal" } ], - "src": "7695:39:95" + "src": "10415:16:163" }, "returnParameters": { - "id": 62225, + "id": 119119, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62221, - "mutability": "mutable", - "name": "basePrice", - "nameLocation": "7785:9:95", - "nodeType": "VariableDeclaration", - "scope": 62386, - "src": "7768:26:95", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$66422_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - }, - "typeName": { - "id": 62220, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62219, - "name": "UnitPrice", - "nameLocations": [ - "7768:9:95" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 66422, - "src": "7768:9:95" - }, - "referencedDeclaration": 66422, - "src": "7768:9:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$66422_storage_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62224, + "id": 119118, "mutability": "mutable", - "name": "tax", - "nameLocation": "7813:3:95", + "name": "usdWei", + "nameLocation": "10461:6:163", "nodeType": "VariableDeclaration", - "scope": 62386, - "src": "7796:20:95", + "scope": 119138, + "src": "10453:14:163", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$66422_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 62223, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62222, - "name": "UnitPrice", - "nameLocations": [ - "7796:9:95" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 66422, - "src": "7796:9:95" - }, - "referencedDeclaration": 66422, - "src": "7796:9:95", + "id": 119117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10453:7:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$66422_storage_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "7767:50:95" + "src": "10452:16:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 62416, + "id": 119185, "nodeType": "FunctionDefinition", - "src": "9088:286:95", + "src": "10752:419:163", "nodes": [], "body": { - "id": 62415, + "id": 119184, "nodeType": "Block", - "src": "9166:208:95", + "src": "10981:190:163", "nodes": [], "statements": [ { "expression": { - "arguments": [ - { - "id": 62404, - "name": "usdWei", + "id": 119159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 119156, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119154, + "src": "10987:6:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 119157, + "name": "lbHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62389, - "src": "9285:6:95", + "referencedDeclaration": 119142, + "src": "10996:8:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" } }, - { - "arguments": [ - { - "arguments": [ - { - "id": 62409, - "name": "USD_DECIMALS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61631, - "src": "9325:12:95", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 62408, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9318:6:95", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { - "id": 62407, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "9318:6:95", - "typeDescriptions": {} - } - }, - "id": 62410, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9318:20:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 62406, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9312:5:95", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int32_$", - "typeString": "type(int32)" - }, - "typeName": { - "id": 62405, - "name": "int32", - "nodeType": "ElementaryTypeName", - "src": "9312:5:95", - "typeDescriptions": {} - } - }, - "id": 62411, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9312:27:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int32", - "typeString": "int32" - } + "id": 119158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11005:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10996:15:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10987:24:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 119160, + "nodeType": "ExpressionStatement", + "src": "10987:24:163" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 119178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - { - "hexValue": "3138", - "id": 62412, + "id": 119173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 119168, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, "lValueRequested": false, - "nodeType": "Literal", - "src": "9360:2:95", - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_int32", - "typeString": "int32" - }, - { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - } - ], - "expression": { - "arguments": [ - { - "id": 62401, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119161, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119154, + "src": "11021:6:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 119162, "isConstant": false, "isLValue": false, "isPure": true, + "kind": "number", "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "9258:3:95", - "subExpression": { - "hexValue": "3138", - "id": 62400, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9259:2:95", - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, + "nodeType": "Literal", + "src": "11031:1:163", "typeDescriptions": { - "typeIdentifier": "t_rational_minus_18_by_1", - "typeString": "int_const -18" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11021:11:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_minus_18_by_1", - "typeString": "int_const -18" - } - ], - "expression": { - "arguments": [ - { - "id": 62396, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61672, - "src": "9205:16:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 62397, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61669, - "src": "9223:17:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 62394, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61656, - "src": "9179:5:95", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", - "typeString": "contract IPyth" - } - }, - "id": 62395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9185:19:95", - "memberName": "getPriceNoOlderThan", - "nodeType": "MemberAccess", - "referencedDeclaration": 54776, - "src": "9179:25:95", + "id": 119164, + "name": "ronPrices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119145, + "src": "11036:9:163", "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$54877_memory_ptr_$", - "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" } }, - "id": 62398, + "id": 119165, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9179:62:95", - "tryCall": false, + "memberLocation": "11046:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "11036:16:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$54877_memory_ptr", - "typeString": "struct PythStructs.Price memory" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 119166, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119154, + "src": "11056:6:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11036:26:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11021:41:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 119169, + "name": "proofHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119148, + "src": "11066:11:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[] calldata" } }, - "id": 62399, + "id": 119170, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "9242:7:95", - "memberName": "inverse", + "memberLocation": "11078:6:163", + "memberName": "length", "nodeType": "MemberAccess", - "referencedDeclaration": 69447, - "src": "9179:70:95", + "src": "11066:18:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$54877_memory_ptr_$_t_int32_$returns$_t_struct$_Price_$54877_memory_ptr_$attached_to$_t_struct$_Price_$54877_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,int32) pure returns (struct PythStructs.Price memory)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 119171, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119154, + "src": "11088:6:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11066:28:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11021:73:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 119174, + "name": "setTypes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119151, + "src": "11098:8:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" } }, - "id": 62402, + "id": 119175, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [ - "9252:4:95" - ], - "names": [ - "expo" - ], - "nodeType": "FunctionCall", - "src": "9179:85:95", - "tryCall": false, + "memberLocation": "11107:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "11098:15:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$54877_memory_ptr", - "typeString": "struct PythStructs.Price memory" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62403, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9265:3:95", - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 69339, - "src": "9179:89:95", + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 119176, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119154, + "src": "11117:6:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11098:25:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11021:102:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 119183, + "nodeType": "IfStatement", + "src": "11017:150:163", + "trueBody": { + "id": 119182, + "nodeType": "Block", + "src": "11125:42:163", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 119179, + "name": "InvalidArrayLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123300, + "src": "11140:18:163", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 119180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11140:20:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 119181, + "nodeType": "RevertStatement", + "src": "11133:27:163" + } + ] + } + } + ] + }, + "documentation": { + "id": 119139, + "nodeType": "StructuredDocumentation", + "src": "10658:91:163", + "text": " @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requireBulkSetDomainPriceArgumentsValid", + "nameLocation": "10761:40:163", + "parameters": { + "id": 119152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119142, + "mutability": "mutable", + "name": "lbHashes", + "nameLocation": "10826:8:163", + "nodeType": "VariableDeclaration", + "scope": 119185, + "src": "10807:27:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 119140, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10807:7:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 119141, + "nodeType": "ArrayTypeName", + "src": "10807:9:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119145, + "mutability": "mutable", + "name": "ronPrices", + "nameLocation": "10859:9:163", + "nodeType": "VariableDeclaration", + "scope": 119185, + "src": "10840:28:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 119143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10840:7:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$54877_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$54877_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62413, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [ - "9277:6:95", - "9299:11:95", - "9347:11:95" - ], - "names": [ - "inpWei", - "inpDecimals", - "outDecimals" - ], - "nodeType": "FunctionCall", - "src": "9179:190:95", - "tryCall": false, + "id": 119144, + "nodeType": "ArrayTypeName", + "src": "10840:9:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" } }, - "functionReturnParameters": 62393, - "id": 62414, - "nodeType": "Return", - "src": "9172:197:95" - } - ] - }, - "baseFunctions": [ - 66637 - ], - "documentation": { - "id": 62387, - "nodeType": "StructuredDocumentation", - "src": "9044:41:95", - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "7174026e", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "convertUSDToRON", - "nameLocation": "9097:15:95", - "parameters": { - "id": 62390, - "nodeType": "ParameterList", - "parameters": [ + "visibility": "internal" + }, { "constant": false, - "id": 62389, + "id": 119148, "mutability": "mutable", - "name": "usdWei", - "nameLocation": "9121:6:95", + "name": "proofHashes", + "nameLocation": "10893:11:163", "nodeType": "VariableDeclaration", - "scope": 62416, - "src": "9113:14:95", + "scope": 119185, + "src": "10874:30:163", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", + "typeString": "bytes32[]" }, "typeName": { - "id": 62388, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9113:7:95", + "baseType": { + "id": 119146, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10874:7:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 119147, + "nodeType": "ArrayTypeName", + "src": "10874:9:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119151, + "mutability": "mutable", + "name": "setTypes", + "nameLocation": "10929:8:163", + "nodeType": "VariableDeclaration", + "scope": 119185, + "src": "10910:27:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 119149, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10910:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 119150, + "nodeType": "ArrayTypeName", + "src": "10910:9:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" } }, "visibility": "internal" } ], - "src": "9112:16:95" + "src": "10801:140:163" }, "returnParameters": { - "id": 62393, + "id": 119155, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62392, + "id": 119154, "mutability": "mutable", - "name": "ronWei", - "nameLocation": "9158:6:95", + "name": "length", + "nameLocation": "10973:6:163", "nodeType": "VariableDeclaration", - "scope": 62416, - "src": "9150:14:95", + "scope": 119185, + "src": "10965:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11375,10 +13100,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62391, + "id": 119153, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9150:7:95", + "src": "10965:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11387,413 +13112,835 @@ "visibility": "internal" } ], - "src": "9149:16:95" + "src": "10964:16:163" }, - "scope": 62751, - "stateMutability": "view", + "scope": 119626, + "stateMutability": "pure", "virtual": false, - "visibility": "public" + "visibility": "internal" }, { - "id": 62442, + "id": 119250, "nodeType": "FunctionDefinition", - "src": "9422:263:95", + "src": "11290:503:163", "nodes": [], "body": { - "id": 62441, + "id": 119249, "nodeType": "Block", - "src": "9500:185:95", + "src": "11476:317:163", "nodes": [], "statements": [ { - "expression": { + "assignments": [ + 119204 + ], + "declarations": [ + { + "constant": false, + "id": 119204, + "mutability": "mutable", + "name": "usdPrice", + "nameLocation": "11490:8:163", + "nodeType": "VariableDeclaration", + "scope": 119249, + "src": "11482:16:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11482:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119208, + "initialValue": { "arguments": [ { - "id": 62430, - "name": "ronWei", + "id": 119206, + "name": "ronPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119192, + "src": "11517:8:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119205, + "name": "convertRONToUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119138, + "src": "11501:15:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 119207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11501:25:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11482:44:163" + }, + { + "assignments": [ + 119211 + ], + "declarations": [ + { + "constant": false, + "id": 119211, + "mutability": "mutable", + "name": "dp", + "nameLocation": "11557:2:163", + "nodeType": "VariableDeclaration", + "scope": 119249, + "src": "11532:27:163", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper" + }, + "typeName": { + "id": 119210, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119209, + "name": "TimestampWrapper", + "nameLocations": [ + "11532:16:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125530, + "src": "11532:16:163" + }, + "referencedDeclaration": 125530, + "src": "11532:16:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper" + } + }, + "visibility": "internal" + } + ], + "id": 119215, + "initialValue": { + "baseExpression": { + "id": 119212, + "name": "_dp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118335, + "src": "11562:3:163", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", + "typeString": "mapping(bytes32 => struct TimestampWrapper storage ref)" + } + }, + "id": 119214, + "indexExpression": { + "id": 119213, + "name": "lbHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119190, + "src": "11566:6:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11562:11:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage", + "typeString": "struct TimestampWrapper storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11532:41:163" + }, + { + "expression": { + "id": 119223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 119216, + "name": "updated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119201, + "src": "11579:7:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 119222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119217, + "name": "forced", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62419, - "src": "9596:6:95", + "referencedDeclaration": 119198, + "src": "11589:6:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - { - "hexValue": "3138", - "id": 62431, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119221, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, "lValueRequested": false, - "nodeType": "Literal", - "src": "9623:2:95", - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "leftExpression": { + "expression": { + "id": 119218, + "name": "dp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119211, + "src": "11599:2:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper storage pointer" + } + }, + "id": 119219, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11602:5:163", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 125527, + "src": "11599:8:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "value": "18" + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 119220, + "name": "usdPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119204, + "src": "11610:8:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11599:19:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, + "src": "11589:29:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "11579:39:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 119224, + "nodeType": "ExpressionStatement", + "src": "11579:39:163" + }, + { + "condition": { + "id": 119225, + "name": "updated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119201, + "src": "11629:7:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 119248, + "nodeType": "IfStatement", + "src": "11625:164:163", + "trueBody": { + "id": 119247, + "nodeType": "Block", + "src": "11638:151:163", + "statements": [ { - "arguments": [ - { - "arguments": [ - { - "id": 62436, - "name": "USD_DECIMALS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61631, - "src": "9659:12:95", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], + "expression": { + "id": 119230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 62435, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9652:6:95", + "id": 119226, + "name": "dp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119211, + "src": "11646:2:163", "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { - "id": 62434, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "9652:6:95", - "typeDescriptions": {} + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper storage pointer" } }, - "id": 62437, + "id": 119228, "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9652:20:95", - "tryCall": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "11649:5:163", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 125527, + "src": "11646:8:163", "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 119229, + "name": "usdPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119204, + "src": "11657:8:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11646:19:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], + }, + "id": 119231, + "nodeType": "ExpressionStatement", + "src": "11646:19:163" + }, + { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 62433, + "id": 119237, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9646:5:95", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int32_$", - "typeString": "type(int32)" - }, - "typeName": { - "id": 62432, - "name": "int32", - "nodeType": "ElementaryTypeName", - "src": "9646:5:95", - "typeDescriptions": {} - } - }, - "id": 62438, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9646:27:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int32", - "typeString": "int32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - { - "typeIdentifier": "t_int32", - "typeString": "int32" - } - ], - "expression": { - "arguments": [ - { - "id": 62426, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61672, - "src": "9539:16:95", + "leftHandSide": { + "expression": { + "id": 119232, + "name": "dp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119211, + "src": "11673:2:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper storage pointer" + } + }, + "id": 119234, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "11676:9:163", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 125529, + "src": "11673:12:163", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - { - "id": 62427, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61669, - "src": "9557:17:95", + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 119235, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "11688:5:163", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 119236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11694:9:163", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "11688:15:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } + }, + "src": "11673:30:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "expression": { - "argumentTypes": [ + }, + "id": 119238, + "nodeType": "ExpressionStatement", + "src": "11673:30:163" + }, + { + "eventCall": { + "arguments": [ { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "id": 119240, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119188, + "src": "11735:8:163", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "id": 119241, + "name": "lbHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119190, + "src": "11745:6:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 119242, + "name": "usdPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119204, + "src": "11753:8:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 119243, + "name": "proofHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119194, + "src": "11763:9:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 119244, + "name": "setType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119196, + "src": "11774:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { - "id": 62424, - "name": "_pyth", + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119239, + "name": "DomainPriceUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61656, - "src": "9513:5:95", + "referencedDeclaration": 123377, + "src": "11716:18:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", - "typeString": "contract IPyth" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,uint256,bytes32,uint256)" } }, - "id": 62425, + "id": 119245, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberLocation": "9519:19:95", - "memberName": "getPriceNoOlderThan", - "nodeType": "MemberAccess", - "referencedDeclaration": 54776, - "src": "9513:25:95", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11716:66:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$54877_memory_ptr_$", - "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 62428, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9513:62:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$54877_memory_ptr", - "typeString": "struct PythStructs.Price memory" - } - }, - "id": 62429, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9576:3:95", - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 69339, - "src": "9513:66:95", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$54877_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$54877_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" + "id": 119246, + "nodeType": "EmitStatement", + "src": "11711:71:163" } - }, - "id": 62439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [ - "9588:6:95", - "9610:11:95", - "9633:11:95" - ], - "names": [ - "inpWei", - "inpDecimals", - "outDecimals" - ], - "nodeType": "FunctionCall", - "src": "9513:167:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 62423, - "id": 62440, - "nodeType": "Return", - "src": "9506:174:95" + ] + } } ] }, - "baseFunctions": [ - 66645 - ], "documentation": { - "id": 62417, + "id": 119186, "nodeType": "StructuredDocumentation", - "src": "9378:41:95", - "text": " @inheritdoc INSDomainPrice" + "src": "11175:112:163", + "text": " @dev Helper method to set domain price.\n Emits an event {DomainPriceUpdated} optionally." }, - "functionSelector": "037f1769", "implemented": true, "kind": "function", "modifiers": [], - "name": "convertRONToUSD", - "nameLocation": "9431:15:95", + "name": "_setDomainPrice", + "nameLocation": "11299:15:163", "parameters": { - "id": 62420, + "id": 119199, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62419, + "id": 119188, + "mutability": "mutable", + "name": "operator", + "nameLocation": "11328:8:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11320:16:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 119187, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11320:7:163", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119190, + "mutability": "mutable", + "name": "lbHash", + "nameLocation": "11350:6:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11342:14:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 119189, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11342:7:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119192, + "mutability": "mutable", + "name": "ronPrice", + "nameLocation": "11370:8:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11362:16:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119191, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11362:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119194, + "mutability": "mutable", + "name": "proofHash", + "nameLocation": "11392:9:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11384:17:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 119193, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11384:7:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119196, + "mutability": "mutable", + "name": "setType", + "nameLocation": "11415:7:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11407:15:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119195, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11407:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119198, "mutability": "mutable", - "name": "ronWei", - "nameLocation": "9455:6:95", + "name": "forced", + "nameLocation": "11433:6:163", "nodeType": "VariableDeclaration", - "scope": 62442, - "src": "9447:14:95", + "scope": 119250, + "src": "11428:11:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 62418, - "name": "uint256", + "id": 119197, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "9447:7:95", + "src": "11428:4:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" } ], - "src": "9446:16:95" + "src": "11314:129:163" }, "returnParameters": { - "id": 62423, + "id": 119202, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62422, + "id": 119201, "mutability": "mutable", - "name": "usdWei", - "nameLocation": "9492:6:95", + "name": "updated", + "nameLocation": "11467:7:163", "nodeType": "VariableDeclaration", - "scope": 62442, - "src": "9484:14:95", + "scope": 119250, + "src": "11462:12:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 62421, - "name": "uint256", + "id": 119200, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "9484:7:95", + "src": "11462:4:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" } ], - "src": "9483:16:95" + "src": "11461:14:163" }, - "scope": 62751, - "stateMutability": "view", + "scope": 119626, + "stateMutability": "nonpayable", "virtual": false, - "visibility": "public" + "visibility": "internal" }, { - "id": 62489, + "id": 119267, "nodeType": "FunctionDefinition", - "src": "9783:419:95", + "src": "11895:121:163", "nodes": [], "body": { - "id": 62488, + "id": 119266, "nodeType": "Block", - "src": "10012:190:95", + "src": "11941:75:163", "nodes": [], "statements": [ { "expression": { - "id": 62463, + "id": 119258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 62460, - "name": "length", + "id": 119256, + "name": "_taxRatio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62458, - "src": "10018:6:95", + "referencedDeclaration": 118311, + "src": "11947:9:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11802,643 +13949,495 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "expression": { - "id": 62461, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62446, - "src": "10027:8:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, - "id": 62462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10036:6:95", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "10027:15:95", + "id": 119257, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119253, + "src": "11959:5:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "10018:24:95", + "src": "11947:17:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 62464, + "id": 119259, "nodeType": "ExpressionStatement", - "src": "10018:24:95" + "src": "11947:17:163" }, { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 62482, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 62477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 62472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62467, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 62465, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62458, - "src": "10052:6:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 62466, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10062:1:95", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10052:11:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 62468, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62449, - "src": "10067:9:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 62469, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10077:6:95", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "10067:16:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 62470, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62458, - "src": "10087:6:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10067:26:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "10052:41:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 62473, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62452, - "src": "10097:11:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, - "id": 62474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10109:6:95", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "10097:18:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 62475, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62458, - "src": "10119:6:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10097:28:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "10052:73:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62481, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "eventCall": { + "arguments": [ + { + "arguments": [], "expression": { - "id": 62478, - "name": "setTypes", + "argumentTypes": [], + "id": 119261, + "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62455, - "src": "10129:8:95", + "referencedDeclaration": 103582, + "src": "11991:10:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" } }, - "id": 62479, + "id": 119262, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberLocation": "10138:6:95", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "10129:15:95", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11991:12:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 62480, - "name": "length", + { + "id": 119263, + "name": "ratio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62458, - "src": "10148:6:95", + "referencedDeclaration": 119253, + "src": "12005:5:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - }, - "src": "10129:25:95", + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119260, + "name": "TaxRatioUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123329, + "src": "11975:15:163", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" } }, - "src": "10052:102:95", + "id": 119264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11975:36:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 62487, - "nodeType": "IfStatement", - "src": "10048:150:95", - "trueBody": { - "id": 62486, - "nodeType": "Block", - "src": "10156:42:95", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 62483, - "name": "InvalidArrayLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 66408, - "src": "10171:18:95", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 62484, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10171:20:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62485, - "nodeType": "RevertStatement", - "src": "10164:27:95" - } - ] - } + "id": 119265, + "nodeType": "EmitStatement", + "src": "11970:41:163" } ] }, "documentation": { - "id": 62443, + "id": 119251, "nodeType": "StructuredDocumentation", - "src": "9689:91:95", - "text": " @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid." + "src": "11797:95:163", + "text": " @dev Sets renewal reservation ratio.\n Emits an event {TaxRatioUpdated}." }, "implemented": true, "kind": "function", "modifiers": [], - "name": "_requireBulkSetDomainPriceArgumentsValid", - "nameLocation": "9792:40:95", + "name": "_setTaxRatio", + "nameLocation": "11904:12:163", "parameters": { - "id": 62456, + "id": 119254, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62446, + "id": 119253, "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "9857:8:95", + "name": "ratio", + "nameLocation": "11925:5:163", "nodeType": "VariableDeclaration", - "scope": 62489, - "src": "9838:27:95", + "scope": 119267, + "src": "11917:13:163", "stateVariable": false, - "storageLocation": "calldata", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "baseType": { - "id": 62444, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9838:7:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 62445, - "nodeType": "ArrayTypeName", - "src": "9838:9:95", + "id": 119252, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11917:7:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" - }, + } + ], + "src": "11916:15:163" + }, + "returnParameters": { + "id": 119255, + "nodeType": "ParameterList", + "parameters": [], + "src": "11941:0:163" + }, + "scope": 119626, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "id": 119288, + "nodeType": "FunctionDefinition", + "src": "12126:243:163", + "nodes": [], + "body": { + "id": 119287, + "nodeType": "Block", + "src": "12213:156:163", + "nodes": [], + "statements": [ { - "constant": false, - "id": 62449, - "mutability": "mutable", - "name": "ronPrices", - "nameLocation": "9890:9:95", - "nodeType": "VariableDeclaration", - "scope": 62489, - "src": "9871:28:95", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 62447, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9871:7:95", + "expression": { + "id": 119276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 119274, + "name": "_dpDownScaler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118324, + "src": "12219:13:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", + "typeString": "struct PeriodScaler storage ref" } }, - "id": 62448, - "nodeType": "ArrayTypeName", - "src": "9871:9:95", + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 119275, + "name": "domainPriceScaleRule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119271, + "src": "12235:20:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler calldata" + } + }, + "src": "12219:36:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", + "typeString": "struct PeriodScaler storage ref" } }, - "visibility": "internal" + "id": 119277, + "nodeType": "ExpressionStatement", + "src": "12219:36:163" }, { - "constant": false, - "id": 62452, - "mutability": "mutable", - "name": "proofHashes", - "nameLocation": "9924:11:95", - "nodeType": "VariableDeclaration", - "scope": 62489, - "src": "9905:30:95", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 62450, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9905:7:95", + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 119279, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103582, + "src": "12294:10:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 119280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12294:12:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 119281, + "name": "domainPriceScaleRule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119271, + "src": "12308:20:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler calldata" + } + }, + "id": 119282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12329:5:163", + "memberName": "ratio", + "nodeType": "MemberAccess", + "referencedDeclaration": 125604, + "src": "12308:26:163", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + { + "expression": { + "id": 119283, + "name": "domainPriceScaleRule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119271, + "src": "12336:20:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler calldata" + } + }, + "id": 119284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12357:6:163", + "memberName": "period", + "nodeType": "MemberAccess", + "referencedDeclaration": 125606, + "src": "12336:27:163", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 119278, + "name": "DomainPriceScaleRuleUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123386, + "src": "12266:27:163", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint192_$_t_uint64_$returns$__$", + "typeString": "function (address,uint192,uint64)" } }, - "id": 62451, - "nodeType": "ArrayTypeName", - "src": "9905:9:95", + "id": 119285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12266:98:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "visibility": "internal" - }, + "id": 119286, + "nodeType": "EmitStatement", + "src": "12261:103:163" + } + ] + }, + "documentation": { + "id": 119268, + "nodeType": "StructuredDocumentation", + "src": "12020:103:163", + "text": " @dev Sets domain price scale rule.\n Emits events {DomainPriceScaleRuleUpdated}." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setDomainPriceScaleRule", + "nameLocation": "12135:24:163", + "parameters": { + "id": 119272, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 62455, + "id": 119271, "mutability": "mutable", - "name": "setTypes", - "nameLocation": "9960:8:95", + "name": "domainPriceScaleRule", + "nameLocation": "12182:20:163", "nodeType": "VariableDeclaration", - "scope": 62489, - "src": "9941:27:95", + "scope": 119288, + "src": "12160:42:163", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler" }, "typeName": { - "baseType": { - "id": 62453, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9941:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "id": 119270, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119269, + "name": "PeriodScaler", + "nameLocations": [ + "12160:12:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125607, + "src": "12160:12:163" }, - "id": 62454, - "nodeType": "ArrayTypeName", - "src": "9941:9:95", + "referencedDeclaration": 125607, + "src": "12160:12:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", + "typeString": "struct PeriodScaler" } }, "visibility": "internal" } ], - "src": "9832:140:95" + "src": "12159:44:163" }, "returnParameters": { - "id": 62459, + "id": 119273, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62458, - "mutability": "mutable", - "name": "length", - "nameLocation": "10004:6:95", - "nodeType": "VariableDeclaration", - "scope": 62489, - "src": "9996:14:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62457, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9996:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "9995:16:95" + "parameters": [], + "src": "12213:0:163" }, - "scope": 62751, - "stateMutability": "pure", + "scope": 119626, + "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 62554, + "id": 119372, "nodeType": "FunctionDefinition", - "src": "10321:503:95", + "src": "12526:754:163", "nodes": [], "body": { - "id": 62553, + "id": 119371, "nodeType": "Block", - "src": "10507:317:95", + "src": "12603:677:163", "nodes": [], "statements": [ { "assignments": [ - 62508 + 119297 ], "declarations": [ { "constant": false, - "id": 62508, + "id": 119297, "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "10521:8:95", + "name": "operator", + "nameLocation": "12617:8:163", "nodeType": "VariableDeclaration", - "scope": 62553, - "src": "10513:16:95", + "scope": 119371, + "src": "12609:16:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 62507, - "name": "uint256", + "id": 119296, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "10513:7:95", + "src": "12609:7:163", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" } ], - "id": 62512, + "id": 119300, "initialValue": { - "arguments": [ - { - "id": 62510, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62496, - "src": "10548:8:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], + "arguments": [], "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 62509, - "name": "convertRONToUSD", + "argumentTypes": [], + "id": 119298, + "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62442, - "src": "10532:15:95", + "referencedDeclaration": 103582, + "src": "12628:10:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" } }, - "id": 62511, + "id": 119299, "isConstant": false, "isLValue": false, "isPure": false, @@ -12447,270 +14446,264 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10532:25:95", + "src": "12628:12:163", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "10513:44:95" + "src": "12609:31:163" }, { "assignments": [ - 62515 + 119303 ], "declarations": [ { "constant": false, - "id": 62515, + "id": 119303, "mutability": "mutable", - "name": "dp", - "nameLocation": "10588:2:95", + "name": "renewalFee", + "nameLocation": "12664:10:163", "nodeType": "VariableDeclaration", - "scope": 62553, - "src": "10563:27:95", + "scope": 119371, + "src": "12646:28:163", "stateVariable": false, - "storageLocation": "storage", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage_ptr", - "typeString": "struct TimestampWrapper" + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee" }, "typeName": { - "id": 62514, + "id": 119302, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 62513, - "name": "TimestampWrapper", + "id": 119301, + "name": "RenewalFee", "nameLocations": [ - "10563:16:95" + "12646:10:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68591, - "src": "10563:16:95" + "referencedDeclaration": 123317, + "src": "12646:10:163" }, - "referencedDeclaration": 68591, - "src": "10563:16:95", + "referencedDeclaration": 123317, + "src": "12646:10:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage_ptr", - "typeString": "struct TimestampWrapper" + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", + "typeString": "struct INSDomainPrice.RenewalFee" } }, "visibility": "internal" } ], - "id": 62519, - "initialValue": { - "baseExpression": { - "id": 62516, - "name": "_dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61687, - "src": "10593:3:95", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$68591_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper storage ref)" - } - }, - "id": 62518, - "indexExpression": { - "id": 62517, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62494, - "src": "10597:6:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10593:11:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage", - "typeString": "struct TimestampWrapper storage ref" - } - }, + "id": 119304, "nodeType": "VariableDeclarationStatement", - "src": "10563:41:95" + "src": "12646:28:163" }, { - "expression": { - "id": 62527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62520, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62505, - "src": "10610:7:95", + "assignments": [ + 119306 + ], + "declarations": [ + { + "constant": false, + "id": 119306, + "mutability": "mutable", + "name": "length", + "nameLocation": "12688:6:163", + "nodeType": "VariableDeclaration", + "scope": 119371, + "src": "12680:14:163", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 62526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 62521, - "name": "forced", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62502, - "src": "10620:6:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62525, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 62522, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62515, - "src": "10630:2:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 62523, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10633:5:95", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 68588, - "src": "10630:8:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 62524, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62508, - "src": "10641:8:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10630:19:95", + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12680:7:163", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "10620:29:95", + "visibility": "internal" + } + ], + "id": 119309, + "initialValue": { + "expression": { + "id": 119307, + "name": "renewalFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119293, + "src": "12697:11:163", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" } }, - "src": "10610:39:95", + "id": 119308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12709:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "12697:18:163", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62528, - "nodeType": "ExpressionStatement", - "src": "10610:39:95" + "nodeType": "VariableDeclarationStatement", + "src": "12680:35:163" }, { - "condition": { - "id": 62529, - "name": "updated", + "assignments": [ + 119311 + ], + "declarations": [ + { + "constant": false, + "id": 119311, + "mutability": "mutable", + "name": "maxRenewalFeeLength", + "nameLocation": "12729:19:163", + "nodeType": "VariableDeclaration", + "scope": 119371, + "src": "12721:27:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12721:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119313, + "initialValue": { + "id": 119312, + "name": "_rnfMaxLength", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62505, - "src": "10660:7:95", + "referencedDeclaration": 118314, + "src": "12751:13:163", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62552, - "nodeType": "IfStatement", - "src": "10656:164:95", - "trueBody": { - "id": 62551, + "nodeType": "VariableDeclarationStatement", + "src": "12721:43:163" + }, + { + "body": { + "id": 119355, "nodeType": "Block", - "src": "10669:151:95", + "src": "12800:308:163", "statements": [ { "expression": { - "id": 62534, + "id": 119324, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "expression": { - "id": 62530, - "name": "dp", + "id": 119320, + "name": "renewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119303, + "src": "12808:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 119321, + "name": "renewalFees", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62515, - "src": "10677:2:95", + "referencedDeclaration": 119293, + "src": "12821:11:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" + } + }, + "id": 119323, + "indexExpression": { + "id": 119322, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119315, + "src": "12833:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62532, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, - "lValueRequested": true, - "memberLocation": "10680:5:95", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 68588, - "src": "10677:8:95", + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12821:14:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_calldata_ptr", + "typeString": "struct INSDomainPrice.RenewalFee calldata" + } + }, + "src": "12808:27:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 119325, + "nodeType": "ExpressionStatement", + "src": "12808:27:163" + }, + { + "expression": { + "id": 119333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 119326, + "name": "maxRenewalFeeLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119311, + "src": "12843:19:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12719,57 +14712,167 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 62533, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62508, - "src": "10688:8:95", + "arguments": [ + { + "id": 119329, + "name": "maxRenewalFeeLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119311, + "src": "12874:19:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 119330, + "name": "renewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119303, + "src": "12895:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 119331, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12906:11:163", + "memberName": "labelLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 123314, + "src": "12895:22:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 119327, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104833, + "src": "12865:4:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$104833_$", + "typeString": "type(library Math)" + } + }, + "id": 119328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12870:3:163", + "memberName": "max", + "nodeType": "MemberAccess", + "referencedDeclaration": 103992, + "src": "12865:8:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 119332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12865:53:163", + "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "10677:19:95", + "src": "12843:75:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 62535, + "id": 119334, "nodeType": "ExpressionStatement", - "src": "10677:19:95" + "src": "12843:75:163" }, { "expression": { - "id": 62541, + "id": 119341, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "expression": { - "id": 62536, - "name": "dp", + "baseExpression": { + "id": 119335, + "name": "_rnFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62515, - "src": "10704:2:95", + "referencedDeclaration": 118329, + "src": "12926:6:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 119338, + "indexExpression": { + "expression": { + "id": 119336, + "name": "renewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119303, + "src": "12933:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 119337, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12944:11:163", + "memberName": "labelLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 123314, + "src": "12933:22:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62538, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, - "memberLocation": "10707:9:95", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 68590, - "src": "10704:12:95", + "nodeType": "IndexAccess", + "src": "12926:30:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12779,99 +14882,108 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 62539, - "name": "block", + "id": 119339, + "name": "renewalFee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "10719:5:95", + "referencedDeclaration": 119303, + "src": "12959:10:163", "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" } }, - "id": 62540, + "id": 119340, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "10725:9:95", - "memberName": "timestamp", + "memberLocation": "12970:3:163", + "memberName": "fee", "nodeType": "MemberAccess", - "src": "10719:15:95", + "referencedDeclaration": 123316, + "src": "12959:14:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "10704:30:95", + "src": "12926:47:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 62542, + "id": 119342, "nodeType": "ExpressionStatement", - "src": "10704:30:95" + "src": "12926:47:163" }, { "eventCall": { - "arguments": [ - { - "id": 62544, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62492, - "src": "10766:8:95", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 62545, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62494, - "src": "10776:6:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, + "arguments": [ { - "id": 62546, - "name": "usdPrice", + "id": 119344, + "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62508, - "src": "10784:8:95", + "referencedDeclaration": 119297, + "src": "13012:8:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, { - "id": 62547, - "name": "proofHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62498, - "src": "10794:9:95", + "expression": { + "id": 119345, + "name": "renewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119303, + "src": "13022:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 119346, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13033:11:163", + "memberName": "labelLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 123314, + "src": "13022:22:163", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - "id": 62548, - "name": "setType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62500, - "src": "10805:7:95", + "expression": { + "id": 119347, + "name": "renewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119303, + "src": "13046:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 119348, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13057:3:163", + "memberName": "fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 123316, + "src": "13046:14:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12884,35 +14996,27 @@ "typeIdentifier": "t_address", "typeString": "address" }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], - "id": 62543, - "name": "DomainPriceUpdated", + "id": 119343, + "name": "RenewalFeeByLengthUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 66467, - "src": "10747:18:95", + "referencedDeclaration": 123345, + "src": "12986:25:163", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,uint256,bytes32,uint256)" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" } }, - "id": 62549, + "id": 119349, "isConstant": false, "isLValue": false, "isPure": false, @@ -12921,496 +15025,524 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "10747:66:95", + "src": "12986:75:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 62550, + "id": 119350, "nodeType": "EmitStatement", - "src": "10742:71:95" + "src": "12981:80:163" + }, + { + "id": 119354, + "nodeType": "UncheckedBlock", + "src": "13070:32:163", + "statements": [ + { + "expression": { + "id": 119352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "13090:3:163", + "subExpression": { + "id": 119351, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119315, + "src": "13092:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 119353, + "nodeType": "ExpressionStatement", + "src": "13090:3:163" + } + ] } ] - } - } - ] - }, - "documentation": { - "id": 62490, - "nodeType": "StructuredDocumentation", - "src": "10206:112:95", - "text": " @dev Helper method to set domain price.\n Emits an event {DomainPriceUpdated} optionally." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setDomainPrice", - "nameLocation": "10330:15:95", - "parameters": { - "id": 62503, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62492, - "mutability": "mutable", - "name": "operator", - "nameLocation": "10359:8:95", - "nodeType": "VariableDeclaration", - "scope": 62554, - "src": "10351:16:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62491, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "10351:7:95", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62494, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "10381:6:95", - "nodeType": "VariableDeclaration", - "scope": 62554, - "src": "10373:14:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 62493, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "10373:7:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62496, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "10401:8:95", - "nodeType": "VariableDeclaration", - "scope": 62554, - "src": "10393:16:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62495, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10393:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62498, - "mutability": "mutable", - "name": "proofHash", - "nameLocation": "10423:9:95", - "nodeType": "VariableDeclaration", - "scope": 62554, - "src": "10415:17:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 62497, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "10415:7:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62500, - "mutability": "mutable", - "name": "setType", - "nameLocation": "10446:7:95", - "nodeType": "VariableDeclaration", - "scope": 62554, - "src": "10438:15:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" }, - "typeName": { - "id": 62499, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10438:7:95", - "typeDescriptions": { + "condition": { + "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62502, - "mutability": "mutable", - "name": "forced", - "nameLocation": "10464:6:95", - "nodeType": "VariableDeclaration", - "scope": 62554, - "src": "10459:11:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 62501, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "10459:4:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "10345:129:95" - }, - "returnParameters": { - "id": 62506, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62505, - "mutability": "mutable", - "name": "updated", - "nameLocation": "10498:7:95", - "nodeType": "VariableDeclaration", - "scope": 62554, - "src": "10493:12:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 62504, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "10493:4:95", + }, + "id": 119319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119317, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119315, + "src": "12787:1:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 119318, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119306, + "src": "12791:6:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12787:10:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "visibility": "internal" - } - ], - "src": "10492:14:95" - }, - "scope": 62751, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 62571, - "nodeType": "FunctionDefinition", - "src": "10926:121:95", - "nodes": [], - "body": { - "id": 62570, - "nodeType": "Block", - "src": "10972:75:95", - "nodes": [], - "statements": [ + "id": 119356, + "initializationExpression": { + "assignments": [ + 119315 + ], + "declarations": [ + { + "constant": false, + "id": 119315, + "mutability": "mutable", + "name": "i", + "nameLocation": "12784:1:163", + "nodeType": "VariableDeclaration", + "scope": 119356, + "src": "12776:9:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12776:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119316, + "nodeType": "VariableDeclarationStatement", + "src": "12776:9:163" + }, + "nodeType": "ForStatement", + "src": "12771:337:163" + }, { - "expression": { - "id": 62562, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119359, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { - "id": 62560, - "name": "_taxRatio", + "leftExpression": { + "id": 119357, + "name": "maxRenewalFeeLength", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61663, - "src": "10978:9:95", + "referencedDeclaration": 119311, + "src": "13118:19:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 62561, - "name": "ratio", + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 119358, + "name": "_rnfMaxLength", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62557, - "src": "10990:5:95", + "referencedDeclaration": 118314, + "src": "13141:13:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "10978:17:95", + "src": "13118:36:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 62563, - "nodeType": "ExpressionStatement", - "src": "10978:17:95" - }, - { - "eventCall": { - "arguments": [ + "id": 119370, + "nodeType": "IfStatement", + "src": "13114:162:163", + "trueBody": { + "id": 119369, + "nodeType": "Block", + "src": "13156:120:163", + "statements": [ { - "arguments": [], "expression": { - "argumentTypes": [], - "id": 62565, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52306, - "src": "11022:10:95", + "id": 119362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 119360, + "name": "_rnfMaxLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118314, + "src": "13164:13:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 119361, + "name": "maxRenewalFeeLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119311, + "src": "13180:19:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13164:35:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62566, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11022:12:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "id": 119363, + "nodeType": "ExpressionStatement", + "src": "13164:35:163" }, { - "id": 62567, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62557, - "src": "11036:5:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" + "eventCall": { + "arguments": [ + { + "id": 119365, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119297, + "src": "13239:8:163", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 119366, + "name": "maxRenewalFeeLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119311, + "src": "13249:19:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119364, + "name": "MaxRenewalFeeLengthUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123336, + "src": "13212:26:163", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 119367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13212:57:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 62564, - "name": "TaxRatioUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 66429, - "src": "11006:15:95", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" + "id": 119368, + "nodeType": "EmitStatement", + "src": "13207:62:163" } - }, - "id": 62568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11006:36:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62569, - "nodeType": "EmitStatement", - "src": "11001:41:95" + ] + } } ] }, "documentation": { - "id": 62555, + "id": 119289, "nodeType": "StructuredDocumentation", - "src": "10828:95:95", - "text": " @dev Sets renewal reservation ratio.\n Emits an event {TaxRatioUpdated}." + "src": "12373:150:163", + "text": " @dev Sets renewal fee.\n Emits events {RenewalFeeByLengthUpdated}.\n Emits an event {MaxRenewalFeeLengthUpdated} optionally." }, "implemented": true, "kind": "function", "modifiers": [], - "name": "_setTaxRatio", - "nameLocation": "10935:12:95", + "name": "_setRenewalFeeByLengths", + "nameLocation": "12535:23:163", "parameters": { - "id": 62558, + "id": 119294, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62557, + "id": 119293, "mutability": "mutable", - "name": "ratio", - "nameLocation": "10956:5:95", + "name": "renewalFees", + "nameLocation": "12581:11:163", "nodeType": "VariableDeclaration", - "scope": 62571, - "src": "10948:13:95", + "scope": 119372, + "src": "12559:33:163", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct INSDomainPrice.RenewalFee[]" }, "typeName": { - "id": 62556, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10948:7:95", + "baseType": { + "id": 119291, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119290, + "name": "RenewalFee", + "nameLocations": [ + "12559:10:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123317, + "src": "12559:10:163" + }, + "referencedDeclaration": 123317, + "src": "12559:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", + "typeString": "struct INSDomainPrice.RenewalFee" + } + }, + "id": 119292, + "nodeType": "ArrayTypeName", + "src": "12559:12:163", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", + "typeString": "struct INSDomainPrice.RenewalFee[]" } }, "visibility": "internal" } ], - "src": "10947:15:95" + "src": "12558:35:163" }, "returnParameters": { - "id": 62559, + "id": 119295, "nodeType": "ParameterList", "parameters": [], - "src": "10972:0:95" + "src": "12603:0:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 62592, + "id": 119404, "nodeType": "FunctionDefinition", - "src": "11157:243:95", + "src": "13381:296:163", "nodes": [], "body": { - "id": 62591, + "id": 119403, "nodeType": "Block", - "src": "11244:156:95", + "src": "13483:194:163", "nodes": [], "statements": [ { "expression": { - "id": 62580, + "id": 119385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 62578, - "name": "_dpDownScaler", + "id": 119383, + "name": "_pyth", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61676, - "src": "11250:13:95", + "referencedDeclaration": 118304, + "src": "13489:5:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_storage", - "typeString": "struct PeriodScaler storage ref" + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 62579, - "name": "domainPriceScaleRule", + "id": 119384, + "name": "pyth", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62575, - "src": "11266:20:95", + "referencedDeclaration": 119376, + "src": "13497:4:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_calldata_ptr", - "typeString": "struct PeriodScaler calldata" + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" } }, - "src": "11250:36:95", + "src": "13489:12:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_storage", - "typeString": "struct PeriodScaler storage ref" + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + } + }, + "id": 119386, + "nodeType": "ExpressionStatement", + "src": "13489:12:163" + }, + { + "expression": { + "id": 119389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 119387, + "name": "_maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118317, + "src": "13507:17:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 119388, + "name": "maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119378, + "src": "13527:16:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13507:36:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 119390, + "nodeType": "ExpressionStatement", + "src": "13507:36:163" + }, + { + "expression": { + "id": 119393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 119391, + "name": "_pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118320, + "src": "13549:16:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 119392, + "name": "pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119380, + "src": "13568:15:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "13549:34:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - "id": 62581, + "id": 119394, "nodeType": "ExpressionStatement", - "src": "11250:36:95" + "src": "13549:34:163" }, { "eventCall": { @@ -13419,18 +15551,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 62583, + "id": 119396, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 52306, - "src": "11325:10:95", + "referencedDeclaration": 103582, + "src": "13618:10:163", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, - "id": 62584, + "id": 119397, "isConstant": false, "isLValue": false, "isPure": false, @@ -13439,7 +15571,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11325:12:95", + "src": "13618:12:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -13447,59 +15579,39 @@ } }, { - "expression": { - "id": 62585, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62575, - "src": "11339:20:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - }, - "id": 62586, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11360:5:95", - "memberName": "ratio", - "nodeType": "MemberAccess", - "referencedDeclaration": 68665, - "src": "11339:26:95", + "id": 119398, + "name": "pyth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119376, + "src": "13632:4:163", "typeDescriptions": { - "typeIdentifier": "t_uint192", - "typeString": "uint192" + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" } }, { - "expression": { - "id": 62587, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62575, - "src": "11367:20:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - }, - "id": 62588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11388:6:95", - "memberName": "period", - "nodeType": "MemberAccess", - "referencedDeclaration": 68667, - "src": "11367:27:95", + "id": 119399, + "name": "maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119378, + "src": "13638:16:163", "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 119400, + "name": "pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119380, + "src": "13656:15:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } } ], @@ -13510,26 +15622,30 @@ "typeString": "address" }, { - "typeIdentifier": "t_uint192", - "typeString": "uint192" + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" }, { - "typeIdentifier": "t_uint64", - "typeString": "uint64" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } ], - "id": 62582, - "name": "DomainPriceScaleRuleUpdated", + "id": 119395, + "name": "PythOracleConfigUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 66476, - "src": "11297:27:95", + "referencedDeclaration": 123398, + "src": "13594:23:163", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint192_$_t_uint64_$returns$__$", - "typeString": "function (address,uint192,uint64)" + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (address,contract IPyth,uint256,bytes32)" } }, - "id": 62589, + "id": 119401, "isConstant": false, "isLValue": false, "isPure": false, @@ -13538,147 +15654,300 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11297:98:95", + "src": "13594:78:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 62590, + "id": 119402, "nodeType": "EmitStatement", - "src": "11292:103:95" + "src": "13589:83:163" } ] }, "documentation": { - "id": 62572, + "id": 119373, "nodeType": "StructuredDocumentation", - "src": "11051:103:95", - "text": " @dev Sets domain price scale rule.\n Emits events {DomainPriceScaleRuleUpdated}." + "src": "13284:94:163", + "text": " @dev Sets Pyth Oracle config.\n Emits events {PythOracleConfigUpdated}." }, "implemented": true, "kind": "function", "modifiers": [], - "name": "_setDomainPriceScaleRule", - "nameLocation": "11166:24:95", + "name": "_setPythOracleConfig", + "nameLocation": "13390:20:163", "parameters": { - "id": 62576, + "id": 119381, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62575, + "id": 119376, "mutability": "mutable", - "name": "domainPriceScaleRule", - "nameLocation": "11213:20:95", + "name": "pyth", + "nameLocation": "13417:4:163", "nodeType": "VariableDeclaration", - "scope": 62592, - "src": "11191:42:95", + "scope": 119404, + "src": "13411:10:163", "stateVariable": false, - "storageLocation": "calldata", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_calldata_ptr", - "typeString": "struct PeriodScaler" + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" }, "typeName": { - "id": 62574, + "id": 119375, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 62573, - "name": "PeriodScaler", + "id": 119374, + "name": "IPyth", "nameLocations": [ - "11191:12:95" + "13411:5:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68668, - "src": "11191:12:95" + "referencedDeclaration": 106120, + "src": "13411:5:163" }, - "referencedDeclaration": 68668, - "src": "11191:12:95", + "referencedDeclaration": 106120, + "src": "13411:5:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_storage_ptr", - "typeString": "struct PeriodScaler" + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119378, + "mutability": "mutable", + "name": "maxAcceptableAge", + "nameLocation": "13431:16:163", + "nodeType": "VariableDeclaration", + "scope": 119404, + "src": "13423:24:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119377, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13423:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119380, + "mutability": "mutable", + "name": "pythIdForRONUSD", + "nameLocation": "13457:15:163", + "nodeType": "VariableDeclaration", + "scope": 119404, + "src": "13449:23:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 119379, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13449:7:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, "visibility": "internal" } ], - "src": "11190:44:95" + "src": "13410:63:163" }, "returnParameters": { - "id": 62577, + "id": 119382, "nodeType": "ParameterList", "parameters": [], - "src": "11244:0:95" + "src": "13483:0:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 62676, + "id": 119583, "nodeType": "FunctionDefinition", - "src": "11557:754:95", + "src": "14186:1419:163", "nodes": [], "body": { - "id": 62675, + "id": 119582, "nodeType": "Block", - "src": "11634:677:95", + "src": "14360:1245:163", "nodes": [], "statements": [ { "assignments": [ - 62601 + 119421 + ], + "declarations": [ + { + "constant": false, + "id": 119421, + "mutability": "mutable", + "name": "nameLen", + "nameLocation": "14374:7:163", + "nodeType": "VariableDeclaration", + "scope": 119582, + "src": "14366:15:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14366:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119425, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 119422, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119407, + "src": "14384:5:163", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 119423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14390:6:163", + "memberName": "strlen", + "nodeType": "MemberAccess", + "referencedDeclaration": 125159, + "src": "14384:12:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$attached_to$_t_string_memory_ptr_$", + "typeString": "function (string memory) pure returns (uint256)" + } + }, + "id": 119424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14384:14:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14366:32:163" + }, + { + "assignments": [ + 119427 ], "declarations": [ { "constant": false, - "id": 62601, + "id": 119427, "mutability": "mutable", - "name": "operator", - "nameLocation": "11648:8:95", + "name": "lbHash", + "nameLocation": "14412:6:163", "nodeType": "VariableDeclaration", - "scope": 62675, - "src": "11640:16:95", + "scope": 119582, + "src": "14404:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, "typeName": { - "id": 62600, - "name": "address", + "id": 119426, + "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "11640:7:95", - "stateMutability": "nonpayable", + "src": "14404:7:163", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, "visibility": "internal" } ], - "id": 62604, + "id": 119431, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], - "id": 62602, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52306, - "src": "11659:10:95", + "expression": { + "id": 119428, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119407, + "src": "14421:5:163", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 119429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14427:9:163", + "memberName": "hashLabel", + "nodeType": "MemberAccess", + "referencedDeclaration": 125041, + "src": "14421:15:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes32)" } }, - "id": 62603, + "id": 119430, "isConstant": false, "isLValue": false, "isPure": false, @@ -13687,1032 +15956,1797 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "11659:12:95", + "src": "14421:17:163", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "11640:31:95" + "src": "14404:34:163" }, { "assignments": [ - 62607 + 119433 ], "declarations": [ { "constant": false, - "id": 62607, + "id": 119433, "mutability": "mutable", - "name": "renewalFee", - "nameLocation": "11695:10:95", + "name": "overriddenRenewalFee", + "nameLocation": "14452:20:163", "nodeType": "VariableDeclaration", - "scope": 62675, - "src": "11677:28:95", + "scope": 119582, + "src": "14444:28:163", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 62606, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62605, - "name": "RenewalFee", - "nameLocations": [ - "11677:10:95" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 66417, - "src": "11677:10:95" + "id": 119432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14444:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119437, + "initialValue": { + "baseExpression": { + "id": 119434, + "name": "_rnFeeOverriding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118340, + "src": "14475:16:163", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 119436, + "indexExpression": { + "id": 119435, + "name": "lbHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119427, + "src": "14492:6:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14475:24:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14444:55:163" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119438, + "name": "overriddenRenewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119433, + "src": "14510:20:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 119439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14534:1:163", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14510:25:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 119562, + "nodeType": "Block", + "src": "14606:902:163", + "statements": [ + { + "assignments": [ + 119452 + ], + "declarations": [ + { + "constant": false, + "id": 119452, + "mutability": "mutable", + "name": "renewalFeeByLength", + "nameLocation": "14622:18:163", + "nodeType": "VariableDeclaration", + "scope": 119562, + "src": "14614:26:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14614:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119460, + "initialValue": { + "baseExpression": { + "id": 119453, + "name": "_rnFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118329, + "src": "14643:6:163", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 119459, + "indexExpression": { + "arguments": [ + { + "id": 119456, + "name": "nameLen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119421, + "src": "14659:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 119457, + "name": "_rnfMaxLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118314, + "src": "14668:13:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 119454, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104833, + "src": "14650:4:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$104833_$", + "typeString": "type(library Math)" + } + }, + "id": 119455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14655:3:163", + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 104010, + "src": "14650:8:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 119458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14650:32:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14643:40:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "referencedDeclaration": 66417, - "src": "11677:10:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "visibility": "internal" - } - ], - "id": 62608, - "nodeType": "VariableDeclarationStatement", - "src": "11677:28:95" - }, - { - "assignments": [ - 62610 - ], - "declarations": [ - { - "constant": false, - "id": 62610, - "mutability": "mutable", - "name": "length", - "nameLocation": "11719:6:95", - "nodeType": "VariableDeclaration", - "scope": 62675, - "src": "11711:14:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62609, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11711:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 62613, - "initialValue": { - "expression": { - "id": 62611, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62597, - "src": "11728:11:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - }, - "id": 62612, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11740:6:95", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "11728:18:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11711:35:95" - }, - { - "assignments": [ - 62615 - ], - "declarations": [ - { - "constant": false, - "id": 62615, - "mutability": "mutable", - "name": "maxRenewalFeeLength", - "nameLocation": "11760:19:95", - "nodeType": "VariableDeclaration", - "scope": 62675, - "src": "11752:27:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62614, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11752:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "VariableDeclarationStatement", + "src": "14614:69:163" }, - "visibility": "internal" - } - ], - "id": 62617, - "initialValue": { - "id": 62616, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61666, - "src": "11782:13:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11752:43:95" - }, - { - "body": { - "id": 62659, - "nodeType": "Block", - "src": "11831:308:95", - "statements": [ { "expression": { - "id": 62628, + "id": 119467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 119461, + "name": "basePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119413, + "src": "14691:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" + } + }, + "id": 119463, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "14701:3:163", + "memberName": "usd", + "nodeType": "MemberAccess", + "referencedDeclaration": 123319, + "src": "14691:13:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119464, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119409, + "src": "14707:8:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 119465, + "name": "renewalFeeByLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119452, + "src": "14718:18:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14707:29:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14691:45:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 119468, + "nodeType": "ExpressionStatement", + "src": "14691:45:163" + }, + { + "assignments": [ + 119470 + ], + "declarations": [ + { + "constant": false, + "id": 119470, + "mutability": "mutable", + "name": "id", + "nameLocation": "14752:2:163", + "nodeType": "VariableDeclaration", + "scope": 119562, + "src": "14744:10:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119469, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14744:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119477, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 119473, + "name": "LibRNSDomain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125052, + "src": "14775:12:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibRNSDomain_$125052_$", + "typeString": "type(library LibRNSDomain)" + } + }, + "id": 119474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14788:6:163", + "memberName": "RON_ID", + "nodeType": "MemberAccess", + "referencedDeclaration": 125015, + "src": "14775:19:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 119475, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119407, + "src": "14796:5:163", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 119471, + "name": "LibRNSDomain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125052, + "src": "14757:12:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibRNSDomain_$125052_$", + "typeString": "type(library LibRNSDomain)" + } + }, + "id": 119472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14770:4:163", + "memberName": "toId", + "nodeType": "MemberAccess", + "referencedDeclaration": 125031, + "src": "14757:17:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,string memory) pure returns (uint256)" + } + }, + "id": 119476, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "leftHandSide": { - "id": 62624, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62607, - "src": "11839:10:95", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14757:45:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14744:58:163" + }, + { + "assignments": [ + 119480 + ], + "declarations": [ + { + "constant": false, + "id": 119480, + "mutability": "mutable", + "name": "auction", + "nameLocation": "14821:7:163", + "nodeType": "VariableDeclaration", + "scope": 119562, + "src": "14810:18:163", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 62625, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62597, - "src": "11852:11:95", + "typeIdentifier": "t_contract$_INSAuction_$123292", + "typeString": "contract INSAuction" + }, + "typeName": { + "id": 119479, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119478, + "name": "INSAuction", + "nameLocations": [ + "14810:10:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123292, + "src": "14810:10:163" + }, + "referencedDeclaration": 123292, + "src": "14810:10:163", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" + "typeIdentifier": "t_contract$_INSAuction_$123292", + "typeString": "contract INSAuction" } }, - "id": 62627, - "indexExpression": { - "id": 62626, - "name": "i", + "visibility": "internal" + } + ], + "id": 119482, + "initialValue": { + "id": 119481, + "name": "_auction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118308, + "src": "14831:8:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", + "typeString": "contract INSAuction" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14810:29:163" + }, + { + "condition": { + "arguments": [ + { + "id": 119485, + "name": "id", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62619, - "src": "11864:1:95", + "referencedDeclaration": 119470, + "src": "14868:2:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 119483, + "name": "auction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119480, + "src": "14851:7:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", + "typeString": "contract INSAuction" + } + }, + "id": 119484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14859:8:163", + "memberName": "reserved", + "nodeType": "MemberAccess", + "referencedDeclaration": 123179, + "src": "14851:16:163", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view external returns (bool)" + } + }, + "id": 119486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14851:20:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 119561, + "nodeType": "IfStatement", + "src": "14847:655:163", + "trueBody": { + "id": 119560, + "nodeType": "Block", + "src": "14873:629:163", + "statements": [ + { + "assignments": [ + 119489 + ], + "declarations": [ + { + "constant": false, + "id": 119489, + "mutability": "mutable", + "name": "rns", + "nameLocation": "14894:3:163", + "nodeType": "VariableDeclaration", + "scope": 119560, + "src": "14883:14:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSUnified_$123985", + "typeString": "contract INSUnified" + }, + "typeName": { + "id": 119488, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119487, + "name": "INSUnified", + "nameLocations": [ + "14883:10:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123985, + "src": "14883:10:163" + }, + "referencedDeclaration": 123985, + "src": "14883:10:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSUnified_$123985", + "typeString": "contract INSUnified" + } + }, + "visibility": "internal" + } + ], + "id": 119493, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 119490, + "name": "auction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119480, + "src": "14900:7:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", + "typeString": "contract INSAuction" + } + }, + "id": 119491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14908:13:163", + "memberName": "getRNSUnified", + "nodeType": "MemberAccess", + "referencedDeclaration": 123291, + "src": "14900:21:163", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_INSUnified_$123985_$", + "typeString": "function () view external returns (contract INSUnified)" + } + }, + "id": 119492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14900:23:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSUnified_$123985", + "typeString": "contract INSUnified" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14883:40:163" + }, + { + "assignments": [ + 119495 + ], + "declarations": [ + { + "constant": false, + "id": 119495, + "mutability": "mutable", + "name": "expiry", + "nameLocation": "14941:6:163", + "nodeType": "VariableDeclaration", + "scope": 119560, + "src": "14933:14:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119494, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14933:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119511, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 119500, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119470, + "src": "14995:2:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 119498, + "name": "rns", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119489, + "src": "14981:3:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSUnified_$123985", + "typeString": "contract INSUnified" + } + }, + "id": 119499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14985:9:163", + "memberName": "getRecord", + "nodeType": "MemberAccess", + "referencedDeclaration": 123914, + "src": "14981:13:163", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Record_$123798_memory_ptr_$", + "typeString": "function (uint256) view external returns (struct INSUnified.Record memory)" + } + }, + "id": 119501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14981:17:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Record_$123798_memory_ptr", + "typeString": "struct INSUnified.Record memory" + } + }, + "id": 119502, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14999:3:163", + "memberName": "mut", + "nodeType": "MemberAccess", + "referencedDeclaration": 123797, + "src": "14981:21:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MutableRecord_$123791_memory_ptr", + "typeString": "struct INSUnified.MutableRecord memory" + } + }, + "id": 119503, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15003:6:163", + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 123788, + "src": "14981:28:163", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + { + "id": 119504, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119409, + "src": "15011:8:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "arguments": [ + { + "id": 119507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15026:6:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 119506, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "15026:6:163", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 119505, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "15021:4:163", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 119508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15021:12:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 119509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15034:3:163", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "15021:16:163", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "id": 119496, + "name": "LibSafeRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125596, + "src": "14950:12:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibSafeRange_$125596_$", + "typeString": "type(library LibSafeRange)" + } + }, + "id": 119497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14963:17:163", + "memberName": "addWithUpperbound", + "nodeType": "MemberAccess", + "referencedDeclaration": 125595, + "src": "14950:30:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 119510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14950:88:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14933:105:163" }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11852:14:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata" - } - }, - "src": "11839:27:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 62629, - "nodeType": "ExpressionStatement", - "src": "11839:27:95" - }, - { - "expression": { - "id": 62637, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62630, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62615, - "src": "11874:19:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 62633, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62615, - "src": "11905:19:95", + { + "assignments": [ + 119516, + null + ], + "declarations": [ + { + "constant": false, + "id": 119516, + "mutability": "mutable", + "name": "domainAuction", + "nameLocation": "15081:13:163", + "nodeType": "VariableDeclaration", + "scope": 119560, + "src": "15049:45:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DomainAuction_$123087_memory_ptr", + "typeString": "struct INSAuction.DomainAuction" + }, + "typeName": { + "id": 119515, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119514, + "name": "INSAuction.DomainAuction", + "nameLocations": [ + "15049:10:163", + "15060:13:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123087, + "src": "15049:24:163" + }, + "referencedDeclaration": 123087, + "src": "15049:24:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DomainAuction_$123087_storage_ptr", + "typeString": "struct INSAuction.DomainAuction" + } + }, + "visibility": "internal" + }, + null + ], + "id": 119521, + "initialValue": { + "arguments": [ + { + "id": 119519, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119470, + "src": "15118:2:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 119517, + "name": "auction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119480, + "src": "15099:7:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", + "typeString": "contract INSAuction" + } + }, + "id": 119518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15107:10:163", + "memberName": "getAuction", + "nodeType": "MemberAccess", + "referencedDeclaration": 123250, + "src": "15099:18:163", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_DomainAuction_$123087_memory_ptr_$_t_uint256_$", + "typeString": "function (uint256) view external returns (struct INSAuction.DomainAuction memory,uint256)" + } + }, + "id": 119520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15099:22:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$_t_struct$_DomainAuction_$123087_memory_ptr_$_t_uint256_$", + "typeString": "tuple(struct INSAuction.DomainAuction memory,uint256)" } }, - { + "nodeType": "VariableDeclarationStatement", + "src": "15048:73:163" + }, + { + "assignments": [ + 119523 + ], + "declarations": [ + { + "constant": false, + "id": 119523, + "mutability": "mutable", + "name": "claimedAt", + "nameLocation": "15139:9:163", + "nodeType": "VariableDeclaration", + "scope": 119560, + "src": "15131:17:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119522, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15131:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119527, + "initialValue": { "expression": { - "id": 62634, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62607, - "src": "11926:10:95", + "expression": { + "id": 119524, + "name": "domainAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119516, + "src": "15151:13:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DomainAuction_$123087_memory_ptr", + "typeString": "struct INSAuction.DomainAuction memory" + } + }, + "id": 119525, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15165:3:163", + "memberName": "bid", + "nodeType": "MemberAccess", + "referencedDeclaration": 123086, + "src": "15151:17:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" + "typeIdentifier": "t_struct$_Bid_$123079_memory_ptr", + "typeString": "struct INSAuction.Bid memory" } }, - "id": 62635, + "id": 119526, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "11937:11:95", - "memberName": "labelLength", + "memberLocation": "15169:9:163", + "memberName": "claimedAt", "nodeType": "MemberAccess", - "referencedDeclaration": 66414, - "src": "11926:22:95", + "referencedDeclaration": 123078, + "src": "15151:27:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 62631, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53557, - "src": "11896:4:95", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Math_$53557_$", - "typeString": "type(library Math)" - } - }, - "id": 62632, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11901:3:95", - "memberName": "max", - "nodeType": "MemberAccess", - "referencedDeclaration": 52716, - "src": "11896:8:95", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 62636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11896:53:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11874:75:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62638, - "nodeType": "ExpressionStatement", - "src": "11874:75:95" - }, - { - "expression": { - "id": 62645, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 62639, - "name": "_rnFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61681, - "src": "11957:6:95", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 62642, - "indexExpression": { - "expression": { - "id": 62640, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62607, - "src": "11964:10:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } }, - "id": 62641, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11975:11:95", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 66414, - "src": "11964:22:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "11957:30:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 62643, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62607, - "src": "11990:10:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 62644, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12001:3:95", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 66416, - "src": "11990:14:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11957:47:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62646, - "nodeType": "ExpressionStatement", - "src": "11957:47:95" - }, - { - "eventCall": { - "arguments": [ - { - "id": 62648, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62601, - "src": "12043:8:95", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "nodeType": "VariableDeclarationStatement", + "src": "15131:47:163" }, { - "expression": { - "id": 62649, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62607, - "src": "12053:10:95", + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 119538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119528, + "name": "claimedAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119523, + "src": "15192:9:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 119529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15205:1:163", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "15192:14:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119531, + "name": "expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119495, + "src": "15210:6:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 119532, + "name": "claimedAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119523, + "src": "15219:9:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15210:18:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 119534, + "name": "auction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119480, + "src": "15231:7:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", + "typeString": "contract INSAuction" + } + }, + "id": 119535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15239:25:163", + "memberName": "MAX_AUCTION_DOMAIN_EXPIRY", + "nodeType": "MemberAccess", + "referencedDeclaration": 123143, + "src": "15231:33:163", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$__$returns$_t_uint64_$", + "typeString": "function () pure external returns (uint64)" + } + }, + "id": 119536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15231:35:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "15210:56:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15192:74:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 62650, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12064:11:95", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 66414, - "src": "12053:22:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "id": 119546, + "nodeType": "IfStatement", + "src": "15188:162:163", + "trueBody": { + "id": 119545, + "nodeType": "Block", + "src": "15268:82:163", + "statements": [ + { + "expression": { + "components": [ + { + "id": 119539, + "name": "basePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119413, + "src": "15288:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" + } + }, + { + "id": 119540, + "name": "tax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119416, + "src": "15299:3:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" + } + }, + { + "expression": { + "id": 119541, + "name": "ExceedAuctionDomainExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123306, + "src": "15304:25:163", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 119542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15330:8:163", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "15304:34:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "id": 119543, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "15287:52:163", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_bytes4_$", + "typeString": "tuple(struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory,bytes4)" + } + }, + "functionReturnParameters": 119419, + "id": 119544, + "nodeType": "Return", + "src": "15280:59:163" + } + ] } }, { "expression": { - "id": 62651, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62607, - "src": "12077:10:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 62652, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12088:3:95", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 66416, - "src": "12077:14:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 62647, - "name": "RenewalFeeByLengthUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 66445, - "src": "12017:25:95", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256,uint256)" - } - }, - "id": 62653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12017:75:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62654, - "nodeType": "EmitStatement", - "src": "12012:80:95" - }, - { - "id": 62658, - "nodeType": "UncheckedBlock", - "src": "12101:32:95", - "statements": [ - { - "expression": { - "id": 62656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, - "src": "12121:3:95", - "subExpression": { - "id": 62655, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62619, - "src": "12123:1:95", + "id": 119558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 119547, + "name": "tax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119416, + "src": "15420:3:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" + } + }, + "id": 119549, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15424:3:163", + "memberName": "usd", + "nodeType": "MemberAccess", + "referencedDeclaration": 123319, + "src": "15420:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 119552, + "name": "_taxRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118311, + "src": "15442:9:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 119554, + "name": "lbHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119427, + "src": "15469:6:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 119553, + "name": "_getDomainPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119625, + "src": "15453:15:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) view returns (uint256)" + } + }, + "id": 119555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15453:23:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 119556, + "name": "MAX_PERCENTAGE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118283, + "src": "15478:14:163", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "expression": { + "id": 119550, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104833, + "src": "15430:4:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$104833_$", + "typeString": "type(library Math)" + } + }, + "id": 119551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15435:6:163", + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 104181, + "src": "15430:11:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 119557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15430:63:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15420:73:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62657, - "nodeType": "ExpressionStatement", - "src": "12121:3:95" - } - ] + "id": 119559, + "nodeType": "ExpressionStatement", + "src": "15420:73:163" + } + ] + } } ] }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62623, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 62621, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62619, - "src": "11818:1:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 62622, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62610, - "src": "11822:6:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11818:10:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 62660, - "initializationExpression": { - "assignments": [ - 62619 - ], - "declarations": [ - { - "constant": false, - "id": 62619, - "mutability": "mutable", - "name": "i", - "nameLocation": "11815:1:95", - "nodeType": "VariableDeclaration", - "scope": 62660, - "src": "11807:9:95", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62618, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11807:7:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 62620, - "nodeType": "VariableDeclarationStatement", - "src": "11807:9:95" - }, - "nodeType": "ForStatement", - "src": "11802:337:95" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 62663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 62661, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62615, - "src": "12149:19:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 62662, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61666, - "src": "12172:13:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12149:36:95", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 62674, + "id": 119563, "nodeType": "IfStatement", - "src": "12145:162:95", + "src": "14506:1002:163", "trueBody": { - "id": 62673, + "id": 119450, "nodeType": "Block", - "src": "12187:120:95", + "src": "14537:63:163", "statements": [ { "expression": { - "id": 62666, + "id": 119448, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 62664, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61666, - "src": "12195:13:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 62665, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62615, - "src": "12211:19:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12195:35:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62667, - "nodeType": "ExpressionStatement", - "src": "12195:35:95" - }, - { - "eventCall": { - "arguments": [ - { - "id": 62669, - "name": "operator", + "expression": { + "id": 119441, + "name": "basePrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62601, - "src": "12270:8:95", + "referencedDeclaration": 119413, + "src": "14545:9:163", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" } }, - { - "id": 62670, - "name": "maxRenewalFeeLength", + "id": 119443, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "14555:3:163", + "memberName": "usd", + "nodeType": "MemberAccess", + "referencedDeclaration": 123319, + "src": "14545:13:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119444, + "name": "duration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62615, - "src": "12280:19:95", + "referencedDeclaration": 119409, + "src": "14561:8:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 119446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "~", + "prefix": true, + "src": "14572:21:163", + "subExpression": { + "id": 119445, + "name": "overriddenRenewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119433, + "src": "14573:20:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { + "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - ], - "id": 62668, - "name": "MaxRenewalFeeLengthUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 66436, - "src": "12243:26:95", + }, + "src": "14561:32:163", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62671, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12243:57:95", - "tryCall": false, + "src": "14545:48:163", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62672, - "nodeType": "EmitStatement", - "src": "12238:62:95" + "id": 119449, + "nodeType": "ExpressionStatement", + "src": "14545:48:163" } ] } - } - ] - }, - "documentation": { - "id": 62593, - "nodeType": "StructuredDocumentation", - "src": "11404:150:95", - "text": " @dev Sets renewal fee.\n Emits events {RenewalFeeByLengthUpdated}.\n Emits an event {MaxRenewalFeeLengthUpdated} optionally." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setRenewalFeeByLengths", - "nameLocation": "11566:23:95", - "parameters": { - "id": 62598, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62597, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "11612:11:95", - "nodeType": "VariableDeclaration", - "scope": 62676, - "src": "11590:33:95", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee[]" - }, - "typeName": { - "baseType": { - "id": 62595, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62594, - "name": "RenewalFee", - "nameLocations": [ - "11590:10:95" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 66417, - "src": "11590:10:95" - }, - "referencedDeclaration": 66417, - "src": "11590:10:95", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$66417_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 62596, - "nodeType": "ArrayTypeName", - "src": "11590:12:95", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$66417_storage_$dyn_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee[]" - } - }, - "visibility": "internal" - } - ], - "src": "11589:35:95" - }, - "returnParameters": { - "id": 62599, - "nodeType": "ParameterList", - "parameters": [], - "src": "11634:0:95" - }, - "scope": 62751, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 62708, - "nodeType": "FunctionDefinition", - "src": "12412:296:95", - "nodes": [], - "body": { - "id": 62707, - "nodeType": "Block", - "src": "12514:194:95", - "nodes": [], - "statements": [ - { - "expression": { - "id": 62689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62687, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61656, - "src": "12520:5:95", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", - "typeString": "contract IPyth" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 62688, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62680, - "src": "12528:4:95", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", - "typeString": "contract IPyth" - } - }, - "src": "12520:12:95", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", - "typeString": "contract IPyth" - } - }, - "id": 62690, - "nodeType": "ExpressionStatement", - "src": "12520:12:95" }, { "expression": { - "id": 62693, + "id": 119571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 62691, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61669, - "src": "12538:17:95", + "expression": { + "id": 119564, + "name": "tax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119416, + "src": "15514:3:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" + } + }, + "id": 119566, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15518:3:163", + "memberName": "ron", + "nodeType": "MemberAccess", + "referencedDeclaration": 123321, + "src": "15514:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -14721,254 +17755,245 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 62692, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62682, - "src": "12558:16:95", + "arguments": [ + { + "expression": { + "id": 119568, + "name": "tax", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119416, + "src": "15540:3:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" + } + }, + "id": 119569, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15544:3:163", + "memberName": "usd", + "nodeType": "MemberAccess", + "referencedDeclaration": 123319, + "src": "15540:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119567, + "name": "convertUSDToRON", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119112, + "src": "15524:15:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 119570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15524:24:163", + "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "12538:36:95", + "src": "15514:34:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 62694, - "nodeType": "ExpressionStatement", - "src": "12538:36:95" - }, - { - "expression": { - "id": 62697, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62695, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61672, - "src": "12580:16:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 62696, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62684, - "src": "12599:15:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "12580:34:95", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 62698, + "id": 119572, "nodeType": "ExpressionStatement", - "src": "12580:34:95" + "src": "15514:34:163" }, { - "eventCall": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 62700, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 52306, - "src": "12649:10:95", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 62701, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12649:12:95", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 62702, - "name": "pyth", + "expression": { + "id": 119580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 119573, + "name": "basePrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62680, - "src": "12663:4:95", + "referencedDeclaration": 119413, + "src": "15554:9:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", - "typeString": "contract IPyth" + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" } }, - { - "id": 62703, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62682, - "src": "12669:16:95", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "id": 119575, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15564:3:163", + "memberName": "ron", + "nodeType": "MemberAccess", + "referencedDeclaration": 123321, + "src": "15554:13:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 119577, + "name": "basePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119413, + "src": "15586:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice memory" + } + }, + "id": 119578, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15596:3:163", + "memberName": "usd", + "nodeType": "MemberAccess", + "referencedDeclaration": 123319, + "src": "15586:13:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - }, - { - "id": 62704, - "name": "pythIdForRONUSD", + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119576, + "name": "convertUSDToRON", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62684, - "src": "12687:15:95", + "referencedDeclaration": 119112, + "src": "15570:15:163", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_contract$_IPyth_$54844", - "typeString": "contract IPyth" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" } - ], - "id": 62699, - "name": "PythOracleConfigUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 66488, - "src": "12625:23:95", + }, + "id": 119579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15570:30:163", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IPyth_$54844_$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (address,contract IPyth,uint256,bytes32)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62705, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12625:78:95", - "tryCall": false, + "src": "15554:46:163", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 62706, - "nodeType": "EmitStatement", - "src": "12620:83:95" + "id": 119581, + "nodeType": "ExpressionStatement", + "src": "15554:46:163" } ] }, "documentation": { - "id": 62677, + "id": 119405, "nodeType": "StructuredDocumentation", - "src": "12315:94:95", - "text": " @dev Sets Pyth Oracle config.\n Emits events {PythOracleConfigUpdated}." + "src": "13681:502:163", + "text": " @dev Tries to get the renewal fee for a given domain label and duration.\n It returns the base price, tax, and a revert reason if applicable.\n @param label The domain label.\n @param duration The duration for which the domain is being renewed.\n @return basePrice The base price in USD for ˝renewing the domain.\n @return tax The tax amount in USD for renewing the domain.\n @return revertReason The revert reason if the renewal fee exceeds the auction domain expiry." }, "implemented": true, "kind": "function", "modifiers": [], - "name": "_setPythOracleConfig", - "nameLocation": "12421:20:95", + "name": "_tryGetRenewalFee", + "nameLocation": "14195:17:163", "parameters": { - "id": 62685, + "id": 119410, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62680, + "id": 119407, "mutability": "mutable", - "name": "pyth", - "nameLocation": "12448:4:95", + "name": "label", + "nameLocation": "14227:5:163", "nodeType": "VariableDeclaration", - "scope": 62708, - "src": "12442:10:95", + "scope": 119583, + "src": "14213:19:163", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", - "typeString": "contract IPyth" + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" }, "typeName": { - "id": 62679, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62678, - "name": "IPyth", - "nameLocations": [ - "12442:5:95" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 54844, - "src": "12442:5:95" - }, - "referencedDeclaration": 54844, - "src": "12442:5:95", + "id": 119406, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "14213:6:163", "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$54844", - "typeString": "contract IPyth" + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" } }, "visibility": "internal" }, { "constant": false, - "id": 62682, + "id": 119409, "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "12462:16:95", + "name": "duration", + "nameLocation": "14242:8:163", "nodeType": "VariableDeclaration", - "scope": 62708, - "src": "12454:24:95", + "scope": 119583, + "src": "14234:16:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14976,134 +18001,209 @@ "typeString": "uint256" }, "typeName": { - "id": 62681, + "id": 119408, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "12454:7:95", + "src": "14234:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" + } + ], + "src": "14212:39:163" + }, + "returnParameters": { + "id": 119419, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119413, + "mutability": "mutable", + "name": "basePrice", + "nameLocation": "14304:9:163", + "nodeType": "VariableDeclaration", + "scope": 119583, + "src": "14287:26:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + }, + "typeName": { + "id": 119412, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119411, + "name": "UnitPrice", + "nameLocations": [ + "14287:9:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123322, + "src": "14287:9:163" + }, + "referencedDeclaration": 123322, + "src": "14287:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + } + }, + "visibility": "internal" }, { "constant": false, - "id": 62684, + "id": 119416, "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "12488:15:95", + "name": "tax", + "nameLocation": "14332:3:163", + "nodeType": "VariableDeclaration", + "scope": 119583, + "src": "14315:20:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + }, + "typeName": { + "id": 119415, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119414, + "name": "UnitPrice", + "nameLocations": [ + "14315:9:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123322, + "src": "14315:9:163" + }, + "referencedDeclaration": 123322, + "src": "14315:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119418, + "mutability": "mutable", + "name": "revertReason", + "nameLocation": "14344:12:163", "nodeType": "VariableDeclaration", - "scope": 62708, - "src": "12480:23:95", + "scope": 119583, + "src": "14337:19:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" }, "typeName": { - "id": 62683, - "name": "bytes32", + "id": 119417, + "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "12480:7:95", + "src": "14337:6:163", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" } }, "visibility": "internal" } ], - "src": "12441:63:95" - }, - "returnParameters": { - "id": 62686, - "nodeType": "ParameterList", - "parameters": [], - "src": "12514:0:95" + "src": "14286:71:163" }, - "scope": 62751, - "stateMutability": "nonpayable", + "scope": 119626, + "stateMutability": "view", "virtual": false, "visibility": "internal" }, { - "id": 62750, + "id": 119625, "nodeType": "FunctionDefinition", - "src": "12821:361:95", + "src": "15718:361:163", "nodes": [], "body": { - "id": 62749, + "id": 119624, "nodeType": "Block", - "src": "12894:288:95", + "src": "15791:288:163", "nodes": [], "statements": [ { "assignments": [ - 62718 + 119593 ], "declarations": [ { "constant": false, - "id": 62718, + "id": 119593, "mutability": "mutable", "name": "dp", - "nameLocation": "12925:2:95", + "nameLocation": "15822:2:163", "nodeType": "VariableDeclaration", - "scope": 62749, - "src": "12900:27:95", + "scope": 119624, + "src": "15797:27:163", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage_ptr", + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", "typeString": "struct TimestampWrapper" }, "typeName": { - "id": 62717, + "id": 119592, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 62716, + "id": 119591, "name": "TimestampWrapper", "nameLocations": [ - "12900:16:95" + "15797:16:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 68591, - "src": "12900:16:95" + "referencedDeclaration": 125530, + "src": "15797:16:163" }, - "referencedDeclaration": 68591, - "src": "12900:16:95", + "referencedDeclaration": 125530, + "src": "15797:16:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage_ptr", + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", "typeString": "struct TimestampWrapper" } }, "visibility": "internal" } ], - "id": 62722, + "id": 119597, "initialValue": { "baseExpression": { - "id": 62719, + "id": 119594, "name": "_dp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61687, - "src": "12930:3:95", + "referencedDeclaration": 118335, + "src": "15827:3:163", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$68591_storage_$", + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", "typeString": "mapping(bytes32 => struct TimestampWrapper storage ref)" } }, - "id": 62721, + "id": 119596, "indexExpression": { - "id": 62720, + "id": 119595, "name": "lbHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62711, - "src": "12934:6:95", + "referencedDeclaration": 119586, + "src": "15831:6:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -15114,29 +18214,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "12930:11:95", + "src": "15827:11:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage", + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage", "typeString": "struct TimestampWrapper storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "12900:41:95" + "src": "15797:41:163" }, { "assignments": [ - 62724 + 119599 ], "declarations": [ { "constant": false, - "id": 62724, + "id": 119599, "mutability": "mutable", "name": "lastSyncedAt", - "nameLocation": "12955:12:95", + "nameLocation": "15852:12:163", "nodeType": "VariableDeclaration", - "scope": 62749, - "src": "12947:20:95", + "scope": 119624, + "src": "15844:20:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15144,10 +18244,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62723, + "id": 119598, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "12947:7:95", + "src": "15844:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15156,37 +18256,37 @@ "visibility": "internal" } ], - "id": 62727, + "id": 119602, "initialValue": { "expression": { - "id": 62725, + "id": 119600, "name": "dp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62718, - "src": "12970:2:95", + "referencedDeclaration": 119593, + "src": "15867:2:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage_ptr", + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", "typeString": "struct TimestampWrapper storage pointer" } }, - "id": 62726, + "id": 119601, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "12973:9:95", + "memberLocation": "15870:9:163", "memberName": "timestamp", "nodeType": "MemberAccess", - "referencedDeclaration": 68590, - "src": "12970:12:95", + "referencedDeclaration": 125529, + "src": "15867:12:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "12947:35:95" + "src": "15844:35:163" }, { "condition": { @@ -15194,18 +18294,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 62730, + "id": 119605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 62728, + "id": 119603, "name": "lastSyncedAt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62724, - "src": "12992:12:95", + "referencedDeclaration": 119599, + "src": "15889:12:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15215,66 +18315,66 @@ "operator": "==", "rightExpression": { "hexValue": "30", - "id": 62729, + "id": 119604, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "13008:1:95", + "src": "15905:1:163", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "12992:17:95", + "src": "15889:17:163", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 62733, + "id": 119608, "nodeType": "IfStatement", - "src": "12988:31:95", + "src": "15885:31:163", "trueBody": { "expression": { "hexValue": "30", - "id": 62731, + "id": 119606, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "13018:1:95", + "src": "15915:1:163", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "functionReturnParameters": 62715, - "id": 62732, + "functionReturnParameters": 119590, + "id": 119607, "nodeType": "Return", - "src": "13011:8:95" + "src": "15908:8:163" } }, { "assignments": [ - 62735 + 119610 ], "declarations": [ { "constant": false, - "id": 62735, + "id": 119610, "mutability": "mutable", "name": "passedDuration", - "nameLocation": "13034:14:95", + "nameLocation": "15931:14:163", "nodeType": "VariableDeclaration", - "scope": 62749, - "src": "13026:22:95", + "scope": 119624, + "src": "15923:22:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15282,10 +18382,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62734, + "id": 119609, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "13026:7:95", + "src": "15923:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15294,39 +18394,39 @@ "visibility": "internal" } ], - "id": 62740, + "id": 119615, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 62739, + "id": 119614, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 62736, + "id": 119611, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "13051:5:95", + "src": "15948:5:163", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 62737, + "id": 119612, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "13057:9:95", + "memberLocation": "15954:9:163", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "13051:15:95", + "src": "15948:15:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15335,76 +18435,76 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { - "id": 62738, + "id": 119613, "name": "lastSyncedAt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62724, - "src": "13069:12:95", + "referencedDeclaration": 119599, + "src": "15966:12:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "13051:30:95", + "src": "15948:30:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "13026:55:95" + "src": "15923:55:163" }, { "expression": { "arguments": [ { "expression": { - "id": 62743, + "id": 119618, "name": "dp", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62718, - "src": "13123:2:95", + "referencedDeclaration": 119593, + "src": "16020:2:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$68591_storage_ptr", + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", "typeString": "struct TimestampWrapper storage pointer" } }, - "id": 62744, + "id": 119619, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "13126:5:95", + "memberLocation": "16023:5:163", "memberName": "value", "nodeType": "MemberAccess", - "referencedDeclaration": 68588, - "src": "13123:8:95", + "referencedDeclaration": 125527, + "src": "16020:8:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 62745, + "id": 119620, "name": "MAX_PERCENTAGE", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61635, - "src": "13139:14:95", + "referencedDeclaration": 118283, + "src": "16036:14:163", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { - "id": 62746, + "id": 119621, "name": "passedDuration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 62735, - "src": "13160:14:95", + "referencedDeclaration": 119610, + "src": "16057:14:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15427,42 +18527,42 @@ } ], "expression": { - "id": 62741, + "id": 119616, "name": "_dpDownScaler", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61676, - "src": "13094:13:95", + "referencedDeclaration": 118324, + "src": "15991:13:163", "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$68668_storage", + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", "typeString": "struct PeriodScaler storage ref" } }, - "id": 62742, + "id": 119617, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "memberLocation": "13108:9:95", + "memberLocation": "16005:9:163", "memberName": "scaleDown", "nodeType": "MemberAccess", - "referencedDeclaration": 68758, - "src": "13094:23:95", + "referencedDeclaration": 125697, + "src": "15991:23:163", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_PeriodScaler_$68668_memory_ptr_$_t_uint256_$_t_uint64_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_PeriodScaler_$68668_memory_ptr_$", + "typeIdentifier": "t_function_internal_pure$_t_struct$_PeriodScaler_$125607_memory_ptr_$_t_uint256_$_t_uint64_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_PeriodScaler_$125607_memory_ptr_$", "typeString": "function (struct PeriodScaler memory,uint256,uint64,uint256) pure returns (uint256)" } }, - "id": 62747, + "id": 119622, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [ - "13120:1:95", - "13133:4:95", - "13155:3:95" + "16017:1:163", + "16030:4:163", + "16052:3:163" ], "names": [ "v", @@ -15470,44 +18570,44 @@ "dur" ], "nodeType": "FunctionCall", - "src": "13094:83:95", + "src": "15991:83:163", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 62715, - "id": 62748, + "functionReturnParameters": 119590, + "id": 119623, "nodeType": "Return", - "src": "13087:90:95" + "src": "15984:90:163" } ] }, "documentation": { - "id": 62709, + "id": 119584, "nodeType": "StructuredDocumentation", - "src": "12712:106:95", + "src": "15609:106:163", "text": " @dev Returns the current domain price applied the business rule: deduced x% each y seconds." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_getDomainPrice", - "nameLocation": "12830:15:95", + "nameLocation": "15727:15:163", "parameters": { - "id": 62712, + "id": 119587, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62711, + "id": 119586, "mutability": "mutable", "name": "lbHash", - "nameLocation": "12854:6:95", + "nameLocation": "15751:6:163", "nodeType": "VariableDeclaration", - "scope": 62750, - "src": "12846:14:95", + "scope": 119625, + "src": "15743:14:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15515,10 +18615,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 62710, + "id": 119585, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "12846:7:95", + "src": "15743:7:163", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -15527,21 +18627,21 @@ "visibility": "internal" } ], - "src": "12845:16:95" + "src": "15742:16:163" }, "returnParameters": { - "id": 62715, + "id": 119590, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 62714, + "id": 119589, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 62750, - "src": "12885:7:95", + "scope": 119625, + "src": "15782:7:163", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15549,10 +18649,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62713, + "id": 119588, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "12885:7:95", + "src": "15782:7:163", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -15561,9 +18661,9 @@ "visibility": "internal" } ], - "src": "12884:9:95" + "src": "15781:9:163" }, - "scope": 62751, + "scope": 119626, "stateMutability": "view", "virtual": false, "visibility": "internal" @@ -15573,48 +18673,48 @@ "baseContracts": [ { "baseName": { - "id": 61609, + "id": 118249, "name": "Initializable", "nameLocations": [ - "1005:13:95" + "1005:13:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 50248, - "src": "1005:13:95" + "referencedDeclaration": 101524, + "src": "1005:13:163" }, - "id": 61610, + "id": 118250, "nodeType": "InheritanceSpecifier", - "src": "1005:13:95" + "src": "1005:13:163" }, { "baseName": { - "id": 61611, + "id": 118251, "name": "AccessControlEnumerable", "nameLocations": [ - "1020:23:95" + "1020:23:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 48975, - "src": "1020:23:95" + "referencedDeclaration": 100251, + "src": "1020:23:163" }, - "id": 61612, + "id": 118252, "nodeType": "InheritanceSpecifier", - "src": "1020:23:95" + "src": "1020:23:163" }, { "baseName": { - "id": 61613, + "id": 118253, "name": "INSDomainPrice", "nameLocations": [ - "1045:14:95" + "1045:14:163" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 66670, - "src": "1045:14:95" + "referencedDeclaration": 123609, + "src": "1045:14:163" }, - "id": 61614, + "id": 118254, "nodeType": "InheritanceSpecifier", - "src": "1045:14:95" + "src": "1045:14:163" } ], "canonicalName": "RNSDomainPrice", @@ -15622,51 +18722,53 @@ "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 62751, - 66670, - 48975, - 48850, - 52679, - 52691, - 49073, - 49048, - 52316, - 50248 + 119626, + 123609, + 100251, + 100126, + 103955, + 103967, + 100349, + 100324, + 103592, + 101524 ], "name": "RNSDomainPrice", - "nameLocation": "987:14:95", - "scope": 62752, + "nameLocation": "987:14:163", + "scope": 119627, "usedErrors": [ - 66408, - 66410, - 66412, - 68675, - 69290, - 69298 + 123300, + 123302, + 123304, + 123306, + 125614, + 126229, + 126237 ], "usedEvents": [ - 48987, - 48996, - 49005, - 50094, - 66429, - 66436, - 66445, - 66454, - 66467, - 66476, - 66488 + 100263, + 100272, + 100281, + 101370, + 123329, + 123336, + 123345, + 123354, + 123364, + 123377, + 123386, + 123398 ] } ], "license": "MIT" }, - "blockNumber": 29142324, - "bytecode": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61316780620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80635ef32e2c11610104578063ca15c873116100a2578063e229a67011610071578063e229a670146104b2578063f4651f49146104c5578063f5b541a6146104e6578063fe303ebf1461050d57600080fd5b8063ca15c87314610466578063d40ed58c14610479578063d547741f1461048c578063dd28776d1461049f57600080fd5b80637174026e116100de5780637174026e1461040d5780639010d07c1461042057806391d148541461044b578063a217fddf1461045e57600080fd5b80635ef32e2c146103b6578063700213c8146103be578063713a69a7146103e557600080fd5b80632f6ee6951161017c5780634c255c971161014b5780634c255c971461034f57806353faf90914610370578063599eaabf146103905780635c68c830146103a357600080fd5b80632f6ee695146102b757806335feb741146102d157806336568abe146102e457806339e47da7146102f757600080fd5b8063248a9ca3116101b8578063248a9ca31461023d57806328dd3065146102615780632be09ecc146102765780632f2ff15d146102a457600080fd5b806301ffc9a7146101df578063037f1769146102075780630a44f51f14610228575b600080fd5b6101f26101ed36600461236d565b610520565b60405190151581526020015b60405180910390f35b61021a610215366004612397565b61054b565b6040519081526020016101fe565b6102306105dd565b6040516101fe91906123b0565b61021a61024b366004612397565b6000908152600160208190526040909120015490565b61027461026f366004612427565b6106ba565b005b603554603954603a54604080516001600160a01b0390941684526020840192909252908201526060016101fe565b6102746102b236600461245c565b6106d6565b6102bf601281565b60405160ff90911681526020016101fe565b6102746102df3660046124d0565b610701565b6102746102f236600461245c565b610716565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b9092048216928401928352845190815291511691810191909152016101fe565b61035861271081565b6040516001600160401b0390911681526020016101fe565b61038361037e366004612555565b610799565b6040516101fe9190612618565b61027461039e366004612555565b6108d2565b61021a6103b136600461265e565b6109a2565b60375461021a565b61021a7f033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fad81565b6103f86103f33660046127fe565b610a20565b604080519283526020830191909152016101fe565b61021a61041b366004612397565b610a4c565b61043361042e366004612832565b610adf565b6040516001600160a01b0390911681526020016101fe565b6101f261045936600461245c565b610afe565b61021a600081565b61021a610474366004612397565b610b29565b61027461048736600461286c565b610b40565b61027461049a36600461245c565b610d08565b6102746104ad366004612945565b610d2e565b6102746104c03660046129b0565b610e4c565b6104d86104d33660046129cc565b610e60565b6040516101fe929190612a10565b61021a7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b61027461051b366004612397565b611216565b60006001600160e01b03198216635a05180f60e01b148061054557506105458261122a565b92915050565b603554603a5460395460405163052571af60e51b815260009361054593869360129384936001600160a01b03169263a4ae35e09261059492600401918252602082015260400190565b608060405180830381865afa1580156105b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d59190612a4b565b92919061125f565b603854606090806001600160401b038111156105fb576105fb6126cf565b60405190808252806020026020018201604052801561064057816020015b60408051808201909152600080825260208201528152602001906001900390816106195790505b5091506000805b828110156106b4578060010191508184828151811061066857610668612ab8565b60200260200101516000018181525050603c60008381526020019081526020016000205484828151811061069e5761069e612ab8565b6020908102919091018101510152600101610647565b50505090565b60006106c5816112a0565b6106d08484846112ad565b50505050565b600082815260016020819052604090912001546106f2816112a0565b6106fc838361131f565b505050565b600061070c816112a0565b6106fc8383611341565b6001600160a01b038116331461078b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610795828261145a565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296107c5816112a0565b60006107d78b8b8b8b8b8b8b8b61147c565b905033816001600160401b038111156107f2576107f26126cf565b60405190808252806020026020018201604052801561081b578160200160208202803683370190505b50935060005b828110156108c257610898828e8e8481811061083f5761083f612ab8565b905060200201358d8d8581811061085857610858612ab8565b905060200201358c8c8681811061087157610871612ab8565b905060200201358b8b8781811061088a5761088a612ab8565b9050602002013560006114ca565b8582815181106108aa576108aa612ab8565b91151560209283029190910190910152600101610821565b5050505098975050505050505050565b7f033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fad6108fc816112a0565b600061090e8a8a8a8a8a8a8a8a61147c565b90503360005b828110156109945761098b828d8d8481811061093257610932612ab8565b905060200201358c8c8581811061094b5761094b612ab8565b905060200201358b8b8681811061096457610964612ab8565b905060200201358a8a8781811061097d5761097d612ab8565b9050602002013560016114ca565b50600101610914565b505050505050505050505050565b6000603e60006109e785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061155992505050565b815260200190815260200160002054905080600003610a1957604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610a3a610a3584805160209091012090565b611564565b9150610a4582610a4c565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161054591849160129182916105d591601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad99190612a4b565b906115de565b6000828152600260205260408120610af79083611738565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061054590611744565b600054610100900460ff1615808015610b605750600054600160ff909116105b80610b7a5750303b158015610b7a575060005460ff166001145b610bdd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610782565b6000805460ff191660011790558015610c00576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610c6557610c5d828f8f84818110610c4357610c43612ab8565b9050602002016020810190610c589190612ace565b61174e565b600101610c25565b50603680546001600160a01b0319166001600160a01b038816179055610c8c60008f61174e565b610c968b8b611341565b610c9f89611758565b610ca88861178d565b610cb38786866112ad565b50508015610994576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610d24816112a0565b6106fc838361145a565b7f033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fad610d58816112a0565b83801580610d665750808314155b15610d8457604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610e4157868682818110610da357610da3612ab8565b9050602002013519925082603e60008b8b85818110610dc457610dc4612ab8565b90506020020135815260200190815260200160002081905550888882818110610def57610def612ab8565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf6621485604051610e3191815260200190565b60405180910390a3600101610d89565b505050505050505050565b6000610e57816112a0565b6107958261178d565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000610e9385611809565b855160208701209091506000906000818152603e60205260409020549091508015610eca57610ec3811987612b01565b85526111e9565b6000603c6000610edc866038546118f7565b81526020019081526020016000205490508087610ef99190612b01565b86526000610f387fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888a6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa89190612b28565b156111e5576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110119190612b43565b905060006110ac826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161104691815260200190565b600060405180830381865afa158015611063573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261108b9190810190612bea565b60200151604001516001600160401b03168c6001600160401b03801661190d565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b9190612cf1565b5060408101516060015190915080158015906111a95750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190612d8e565b6001600160401b03166111a78285612dab565b115b156111c757604051631bb03f9d60e01b815260040160405180910390fd5b6111de6037546111d68b611564565b612710611943565b8b52505050505b5050505b83516111f490610a4c565b6020850152845161120490610a4c565b60208601525092959194509092505050565b6000611221816112a0565b61079582611758565b60006001600160e01b03198216637965db0b60e01b148061054557506301ffc9a760e01b6001600160e01b0319831614610545565b600061129584611285876000015160070b8860400151866112809190612dbe565b611a2d565b611290600187611a2d565b611943565b90505b949350505050565b6112aa8133611a87565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161131291815260200190565b60405180910390a4505050565b6113298282611ae0565b60008281526002602052604090206106fc9082611b4b565b60408051808201909152600080825260208201523390603854839060005b8281101561140c5786868281811061137957611379612ab8565b90506040020180360381019061138f9190612de5565b935061139f828560000151611b60565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a77916113fc91815260200190565b60405180910390a360010161135f565b50603854811461145257603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6114648282611b6f565b60008281526002602052604090206106fc9082611bd6565b8680158061148a5750858114155b806114955750838114155b806114a05750818114155b156114be57604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b6000806114d68661054b565b6000888152603d6020526040902090915083806114f35750805482115b9250821561154d57818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611588575060009392505050565b60006115948242612dab565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b031660208201529192506115d5919061271084611beb565b95945050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260006116176001856040015161128090612e17565b90506001600160ff1b0381111561164d576040808501519051633e87ca5d60e11b815260039190910b6004820152602401610782565b600061165d600161128086612e17565b90506001600160ff1b0381111561168d57604051633e87ca5d60e11b8152600385900b6004820152602401610782565b845160009060070b61169f8385612e3a565b6116a99190612e80565b9050677fffffffffffffff8113156116f557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b6044820152606401610782565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610af78383611cc1565b6000610545825490565b610795828261131f565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61179a8282612ec3565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc646117cc6020840184612f05565b6117dc6040850160208601612f22565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b600080600080845190505b808310156118ef57600085848151811061183057611830612ab8565b01602001516001600160f81b0319169050600160ff1b811015611858576001840193506118e3565b600760fd1b6001600160f81b031982161015611879576002840193506118e3565b600f60fc1b6001600160f81b03198216101561189a576003840193506118e3565b601f60fb1b6001600160f81b0319821610156118bb576004840193506118e3565b603f60fa1b6001600160f81b0319821610156118dc576005840193506118e3565b6006840193505b50600190910190611814565b509392505050565b60008183106119065781610af7565b5090919050565b60008184118061191c57508183115b15611928575080610af7565b6119328484611ceb565b905081811115610af7575092915050565b600080806000198587098587029250828110838203039150508060000361197d5783828161197357611973612e6a565b0492505050610af7565b8084116119c45760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610782565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000808260030b1215611a5f57611a4382612e17565b611a4e90600a613023565b611a589084613035565b9050610545565b60008260030b1315611a8057611a7682600a613023565b611a589084612b01565b5081610545565b611a918282610afe565b61079557611a9e81611cff565b611aa9836020611d11565b604051602001611aba929190613049565b60408051601f198184030181529082905262461bcd60e51b8252610782916004016130be565b611aea8282610afe565b6107955760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610af7836001600160a01b038416611eac565b60008183116119065781610af7565b611b798282610afe565b156107955760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610af7836001600160a01b038416611efb565b60008085602001516001600160401b031683611c079190613035565b9050801580611c1e575085516001600160c01b0316155b15611c2c5784915050611298565b85516001600160c01b03166001600160401b03851603611c50576000915050611298565b61ffff811115611c7657604051637359f25f60e01b815260048101829052602401610782565b6000611ca68760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611943565b9050611cb6868261271085611fee565b979650505050505050565b6000826000018281548110611cd857611cd8612ab8565b9060005260206000200154905092915050565b818101828110156105455750600019610545565b60606105456001600160a01b03831660145b60606000611d20836002612b01565b611d2b9060026130f1565b6001600160401b03811115611d4257611d426126cf565b6040519080825280601f01601f191660200182016040528015611d6c576020820181803683370190505b509050600360fc1b81600081518110611d8757611d87612ab8565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611db657611db6612ab8565b60200101906001600160f81b031916908160001a9053506000611dda846002612b01565b611de59060016130f1565b90505b6001811115611e5d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e1957611e19612ab8565b1a60f81b828281518110611e2f57611e2f612ab8565b60200101906001600160f81b031916908160001a90535060049490941c93611e5681613104565b9050611de8565b508315610af75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610782565b6000818152600183016020526040812054611ef357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610545565b506000610545565b60008181526001830160205260408120548015611fe4576000611f1f600183612dab565b8554909150600090611f3390600190612dab565b9050818114611f98576000866000018281548110611f5357611f53612ab8565b9060005260206000200154905080876000018481548110611f7657611f76612ab8565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611fa957611fa961311b565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610545565b6000915050610545565b600082841480612000575061ffff8216155b1561200c575083611298565b5083600080808061202d61ffff87166120248a612151565b61ffff166118f7565b90505b61ffff8116156120835761204a8561ffff83168a0a612322565b9094509250831561206357829450808603955080820191505b61207c600261ffff83160461ffff168761ffff166118f7565b9050612030565b505b61ffff8516156120f6576120998488612322565b909350915082156120b857600019909401939092508290600101612085565b61ffff8116156120dd578584816120d1576120d1612e6a565b04935060001901612085565b6120e8848888611943565b600019909501949350612085565b600061210187612151565b90505b61ffff8216156121455760006121228261ffff168461ffff166118f7565b90508061ffff16880a868161213957612139612e6a565b04955090910390612104565b50505050949350505050565b60006003821015612164575060ff919050565b600482101561217557506080919050565b601082101561218657506040919050565b61010082101561219857506020919050565b611bdc8210156121aa57506014919050565b612c708210156121bc57506013919050565b614aa98210156121ce57506012919050565b6185548210156121e057506011919050565b620100008210156121f357506010919050565b620218378210156122065750600f919050565b6204e0468210156122195750600e919050565b620ced4c82101561222c5750600d919050565b6228514682101561223f5750600c919050565b629aa2ad8210156122525750600b919050565b6303080c018210156122665750600a919050565b6315c5cbbd82101561227a57506009919050565b64010000000082101561228f57506008919050565b6417c6a1f29f8210156122a457506007919050565b6506597fa94f5c8210156122ba57506006919050565b66093088c35d733b8210156122d157506005919050565b680100000000000000008210156122ea57506004919050565b6a285145f31ae515c447bb5782101561230557506003919050565b600160801b82101561231957506002919050565b5060015b919050565b600080836000036123395750600190506000612366565b8383028385828161234c5761234c612e6a565b041461235f576000809250925050612366565b6001925090505b9250929050565b60006020828403121561237f57600080fd5b81356001600160e01b031981168114610af757600080fd5b6000602082840312156123a957600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b828110156123fa576123ea84835180518252602090810151910152565b92840192908501906001016123cd565b5091979650505050505050565b6001600160a01b03811681146112aa57600080fd5b803561231d81612407565b60008060006060848603121561243c57600080fd5b833561244781612407565b95602085013595506040909401359392505050565b6000806040838503121561246f57600080fd5b82359150602083013561248181612407565b809150509250929050565b60008083601f84011261249e57600080fd5b5081356001600160401b038111156124b557600080fd5b6020830191508360208260061b850101111561236657600080fd5b600080602083850312156124e357600080fd5b82356001600160401b038111156124f957600080fd5b6125058582860161248c565b90969095509350505050565b60008083601f84011261252357600080fd5b5081356001600160401b0381111561253a57600080fd5b6020830191508360208260051b850101111561236657600080fd5b6000806000806000806000806080898b03121561257157600080fd5b88356001600160401b038082111561258857600080fd5b6125948c838d01612511565b909a50985060208b01359150808211156125ad57600080fd5b6125b98c838d01612511565b909850965060408b01359150808211156125d257600080fd5b6125de8c838d01612511565b909650945060608b01359150808211156125f757600080fd5b506126048b828c01612511565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612652578351151583529284019291840191600101612634565b50909695505050505050565b6000806020838503121561267157600080fd5b82356001600160401b038082111561268857600080fd5b818501915085601f83011261269c57600080fd5b8135818111156126ab57600080fd5b8660208285010111156126bd57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612707576127076126cf565b60405290565b604080519081016001600160401b0381118282101715612707576127076126cf565b604051606081016001600160401b0381118282101715612707576127076126cf565b604051601f8201601f191681016001600160401b0381118282101715612779576127796126cf565b604052919050565b60006001600160401b0382111561279a5761279a6126cf565b50601f01601f191660200190565b600082601f8301126127b957600080fd5b81356127cc6127c782612781565b612751565b8181528460208386010111156127e157600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561281057600080fd5b81356001600160401b0381111561282657600080fd5b611298848285016127a8565b6000806040838503121561284557600080fd5b50508035926020909101359150565b60006040828403121561286657600080fd5b50919050565b60008060008060008060008060008060006101408c8e03121561288e57600080fd5b6128988c35612407565b8b359a506001600160401b038060208e013511156128b557600080fd5b6128c58e60208f01358f01612511565b909b50995060408d01358110156128db57600080fd5b506128ec8d60408e01358e0161248c565b909850965060608c013595506129058d60808e01612854565b945060c08c013561291581612407565b935061292360e08d0161241c565b92506101008c013591506101208c013590509295989b509295989b9093969950565b6000806000806040858703121561295b57600080fd5b84356001600160401b038082111561297257600080fd5b61297e88838901612511565b9096509450602087013591508082111561299757600080fd5b506129a487828801612511565b95989497509550505050565b6000604082840312156129c257600080fd5b610af78383612854565b600080604083850312156129df57600080fd5b82356001600160401b038111156129f557600080fd5b612a01858286016127a8565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610af7565b6001600160401b03811681146112aa57600080fd5b600060808284031215612a5d57600080fd5b612a656126e5565b82518060070b8114612a7657600080fd5b81526020830151612a8681612a36565b60208201526040830151600381900b8114612aa057600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612ae057600080fd5b8135610af781612407565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761054557610545612aeb565b8051801515811461231d57600080fd5b600060208284031215612b3a57600080fd5b610af782612b18565b600060208284031215612b5557600080fd5b8151610af781612407565b60005b83811015612b7b578181015183820152602001612b63565b50506000910152565b600060808284031215612b9657600080fd5b612b9e6126e5565b90508151612bab81612407565b81526020820151612bbb81612407565b60208201526040820151612bce81612a36565b6040820152612bdf60608301612b18565b606082015292915050565b60006020808385031215612bfd57600080fd5b82516001600160401b0380821115612c1457600080fd5b9084019060a08287031215612c2857600080fd5b612c3061270d565b825182811115612c3f57600080fd5b830160608189031215612c5157600080fd5b612c5961272f565b815160ff81168114612c6a57600080fd5b81528186015186820152604082015184811115612c8657600080fd5b82019350601f84018913612c9957600080fd5b83519150612ca96127c783612781565b8281528987848701011115612cbd57600080fd5b612ccc83888301898801612b60565b6040820152825250612ce087848601612b84565b848201528094505050505092915050565b60008082840360e0811215612d0557600080fd5b60c0811215612d1357600080fd5b612d1b61272f565b84518152602085015160208201526080603f1983011215612d3b57600080fd5b612d436126e5565b91506040850151612d5381612407565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b600060208284031215612da057600080fd5b8151610af781612a36565b8181038181111561054557610545612aeb565b600381810b9083900b01637fffffff8113637fffffff198212171561054557610545612aeb565b600060408284031215612df757600080fd5b612dff61270d565b82358152602083013560208201528091505092915050565b60008160030b637fffffff198103612e3157612e31612aeb565b60000392915050565b80820260008212600160ff1b84141615612e5657612e56612aeb565b818105831482151761054557610545612aeb565b634e487b7160e01b600052601260045260246000fd5b600082612e8f57612e8f612e6a565b600160ff1b821460001984141615612ea957612ea9612aeb565b500590565b6001600160c01b03811681146112aa57600080fd5b8135612ece81612eae565b81546001600160c01b03199081166001600160c01b039290921691821783556020840135612efb81612a36565b60c01b1617905550565b600060208284031215612f1757600080fd5b8135610af781612eae565b600060208284031215612f3457600080fd5b8135610af781612a36565b600181815b80851115612f7a578160001904821115612f6057612f60612aeb565b80851615612f6d57918102915b93841c9390800290612f44565b509250929050565b600082612f9157506001610545565b81612f9e57506000610545565b8160018114612fb45760028114612fbe57612fda565b6001915050610545565b60ff841115612fcf57612fcf612aeb565b50506001821b610545565b5060208310610133831016604e8410600b8410161715612ffd575081810a610545565b6130078383612f3f565b806000190482111561301b5761301b612aeb565b029392505050565b6000610af763ffffffff841683612f82565b60008261304457613044612e6a565b500490565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613081816017850160208801612b60565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516130b2816028840160208801612b60565b01602801949350505050565b60208152600082518060208401526130dd816040850160208701612b60565b601f01601f19169190910160400192915050565b8082018082111561054557610545612aeb565b60008161311357613113612aeb565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220722ea28f7ccafb656b478e4bbef9e9c323475159021273a45634f4d30ee74d4b64736f6c63430008150033", + "blockNumber": 32803312, + "bytecode": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61351380620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", "chainId": 2020, - "contractName": "RNSDomainPrice", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80635ef32e2c11610104578063ca15c873116100a2578063e229a67011610071578063e229a670146104b2578063f4651f49146104c5578063f5b541a6146104e6578063fe303ebf1461050d57600080fd5b8063ca15c87314610466578063d40ed58c14610479578063d547741f1461048c578063dd28776d1461049f57600080fd5b80637174026e116100de5780637174026e1461040d5780639010d07c1461042057806391d148541461044b578063a217fddf1461045e57600080fd5b80635ef32e2c146103b6578063700213c8146103be578063713a69a7146103e557600080fd5b80632f6ee6951161017c5780634c255c971161014b5780634c255c971461034f57806353faf90914610370578063599eaabf146103905780635c68c830146103a357600080fd5b80632f6ee695146102b757806335feb741146102d157806336568abe146102e457806339e47da7146102f757600080fd5b8063248a9ca3116101b8578063248a9ca31461023d57806328dd3065146102615780632be09ecc146102765780632f2ff15d146102a457600080fd5b806301ffc9a7146101df578063037f1769146102075780630a44f51f14610228575b600080fd5b6101f26101ed36600461236d565b610520565b60405190151581526020015b60405180910390f35b61021a610215366004612397565b61054b565b6040519081526020016101fe565b6102306105dd565b6040516101fe91906123b0565b61021a61024b366004612397565b6000908152600160208190526040909120015490565b61027461026f366004612427565b6106ba565b005b603554603954603a54604080516001600160a01b0390941684526020840192909252908201526060016101fe565b6102746102b236600461245c565b6106d6565b6102bf601281565b60405160ff90911681526020016101fe565b6102746102df3660046124d0565b610701565b6102746102f236600461245c565b610716565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b9092048216928401928352845190815291511691810191909152016101fe565b61035861271081565b6040516001600160401b0390911681526020016101fe565b61038361037e366004612555565b610799565b6040516101fe9190612618565b61027461039e366004612555565b6108d2565b61021a6103b136600461265e565b6109a2565b60375461021a565b61021a7f033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fad81565b6103f86103f33660046127fe565b610a20565b604080519283526020830191909152016101fe565b61021a61041b366004612397565b610a4c565b61043361042e366004612832565b610adf565b6040516001600160a01b0390911681526020016101fe565b6101f261045936600461245c565b610afe565b61021a600081565b61021a610474366004612397565b610b29565b61027461048736600461286c565b610b40565b61027461049a36600461245c565b610d08565b6102746104ad366004612945565b610d2e565b6102746104c03660046129b0565b610e4c565b6104d86104d33660046129cc565b610e60565b6040516101fe929190612a10565b61021a7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b61027461051b366004612397565b611216565b60006001600160e01b03198216635a05180f60e01b148061054557506105458261122a565b92915050565b603554603a5460395460405163052571af60e51b815260009361054593869360129384936001600160a01b03169263a4ae35e09261059492600401918252602082015260400190565b608060405180830381865afa1580156105b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d59190612a4b565b92919061125f565b603854606090806001600160401b038111156105fb576105fb6126cf565b60405190808252806020026020018201604052801561064057816020015b60408051808201909152600080825260208201528152602001906001900390816106195790505b5091506000805b828110156106b4578060010191508184828151811061066857610668612ab8565b60200260200101516000018181525050603c60008381526020019081526020016000205484828151811061069e5761069e612ab8565b6020908102919091018101510152600101610647565b50505090565b60006106c5816112a0565b6106d08484846112ad565b50505050565b600082815260016020819052604090912001546106f2816112a0565b6106fc838361131f565b505050565b600061070c816112a0565b6106fc8383611341565b6001600160a01b038116331461078b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610795828261145a565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296107c5816112a0565b60006107d78b8b8b8b8b8b8b8b61147c565b905033816001600160401b038111156107f2576107f26126cf565b60405190808252806020026020018201604052801561081b578160200160208202803683370190505b50935060005b828110156108c257610898828e8e8481811061083f5761083f612ab8565b905060200201358d8d8581811061085857610858612ab8565b905060200201358c8c8681811061087157610871612ab8565b905060200201358b8b8781811061088a5761088a612ab8565b9050602002013560006114ca565b8582815181106108aa576108aa612ab8565b91151560209283029190910190910152600101610821565b5050505098975050505050505050565b7f033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fad6108fc816112a0565b600061090e8a8a8a8a8a8a8a8a61147c565b90503360005b828110156109945761098b828d8d8481811061093257610932612ab8565b905060200201358c8c8581811061094b5761094b612ab8565b905060200201358b8b8681811061096457610964612ab8565b905060200201358a8a8781811061097d5761097d612ab8565b9050602002013560016114ca565b50600101610914565b505050505050505050505050565b6000603e60006109e785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061155992505050565b815260200190815260200160002054905080600003610a1957604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610a3a610a3584805160209091012090565b611564565b9150610a4582610a4c565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161054591849160129182916105d591601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad99190612a4b565b906115de565b6000828152600260205260408120610af79083611738565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061054590611744565b600054610100900460ff1615808015610b605750600054600160ff909116105b80610b7a5750303b158015610b7a575060005460ff166001145b610bdd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610782565b6000805460ff191660011790558015610c00576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610c6557610c5d828f8f84818110610c4357610c43612ab8565b9050602002016020810190610c589190612ace565b61174e565b600101610c25565b50603680546001600160a01b0319166001600160a01b038816179055610c8c60008f61174e565b610c968b8b611341565b610c9f89611758565b610ca88861178d565b610cb38786866112ad565b50508015610994576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610d24816112a0565b6106fc838361145a565b7f033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fad610d58816112a0565b83801580610d665750808314155b15610d8457604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610e4157868682818110610da357610da3612ab8565b9050602002013519925082603e60008b8b85818110610dc457610dc4612ab8565b90506020020135815260200190815260200160002081905550888882818110610def57610def612ab8565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf6621485604051610e3191815260200190565b60405180910390a3600101610d89565b505050505050505050565b6000610e57816112a0565b6107958261178d565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000610e9385611809565b855160208701209091506000906000818152603e60205260409020549091508015610eca57610ec3811987612b01565b85526111e9565b6000603c6000610edc866038546118f7565b81526020019081526020016000205490508087610ef99190612b01565b86526000610f387fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888a6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa89190612b28565b156111e5576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110119190612b43565b905060006110ac826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161104691815260200190565b600060405180830381865afa158015611063573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261108b9190810190612bea565b60200151604001516001600160401b03168c6001600160401b03801661190d565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b9190612cf1565b5060408101516060015190915080158015906111a95750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190612d8e565b6001600160401b03166111a78285612dab565b115b156111c757604051631bb03f9d60e01b815260040160405180910390fd5b6111de6037546111d68b611564565b612710611943565b8b52505050505b5050505b83516111f490610a4c565b6020850152845161120490610a4c565b60208601525092959194509092505050565b6000611221816112a0565b61079582611758565b60006001600160e01b03198216637965db0b60e01b148061054557506301ffc9a760e01b6001600160e01b0319831614610545565b600061129584611285876000015160070b8860400151866112809190612dbe565b611a2d565b611290600187611a2d565b611943565b90505b949350505050565b6112aa8133611a87565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161131291815260200190565b60405180910390a4505050565b6113298282611ae0565b60008281526002602052604090206106fc9082611b4b565b60408051808201909152600080825260208201523390603854839060005b8281101561140c5786868281811061137957611379612ab8565b90506040020180360381019061138f9190612de5565b935061139f828560000151611b60565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a77916113fc91815260200190565b60405180910390a360010161135f565b50603854811461145257603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6114648282611b6f565b60008281526002602052604090206106fc9082611bd6565b8680158061148a5750858114155b806114955750838114155b806114a05750818114155b156114be57604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b6000806114d68661054b565b6000888152603d6020526040902090915083806114f35750805482115b9250821561154d57818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611588575060009392505050565b60006115948242612dab565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b031660208201529192506115d5919061271084611beb565b95945050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260006116176001856040015161128090612e17565b90506001600160ff1b0381111561164d576040808501519051633e87ca5d60e11b815260039190910b6004820152602401610782565b600061165d600161128086612e17565b90506001600160ff1b0381111561168d57604051633e87ca5d60e11b8152600385900b6004820152602401610782565b845160009060070b61169f8385612e3a565b6116a99190612e80565b9050677fffffffffffffff8113156116f557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b6044820152606401610782565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610af78383611cc1565b6000610545825490565b610795828261131f565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61179a8282612ec3565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc646117cc6020840184612f05565b6117dc6040850160208601612f22565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b600080600080845190505b808310156118ef57600085848151811061183057611830612ab8565b01602001516001600160f81b0319169050600160ff1b811015611858576001840193506118e3565b600760fd1b6001600160f81b031982161015611879576002840193506118e3565b600f60fc1b6001600160f81b03198216101561189a576003840193506118e3565b601f60fb1b6001600160f81b0319821610156118bb576004840193506118e3565b603f60fa1b6001600160f81b0319821610156118dc576005840193506118e3565b6006840193505b50600190910190611814565b509392505050565b60008183106119065781610af7565b5090919050565b60008184118061191c57508183115b15611928575080610af7565b6119328484611ceb565b905081811115610af7575092915050565b600080806000198587098587029250828110838203039150508060000361197d5783828161197357611973612e6a565b0492505050610af7565b8084116119c45760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610782565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000808260030b1215611a5f57611a4382612e17565b611a4e90600a613023565b611a589084613035565b9050610545565b60008260030b1315611a8057611a7682600a613023565b611a589084612b01565b5081610545565b611a918282610afe565b61079557611a9e81611cff565b611aa9836020611d11565b604051602001611aba929190613049565b60408051601f198184030181529082905262461bcd60e51b8252610782916004016130be565b611aea8282610afe565b6107955760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610af7836001600160a01b038416611eac565b60008183116119065781610af7565b611b798282610afe565b156107955760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610af7836001600160a01b038416611efb565b60008085602001516001600160401b031683611c079190613035565b9050801580611c1e575085516001600160c01b0316155b15611c2c5784915050611298565b85516001600160c01b03166001600160401b03851603611c50576000915050611298565b61ffff811115611c7657604051637359f25f60e01b815260048101829052602401610782565b6000611ca68760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611943565b9050611cb6868261271085611fee565b979650505050505050565b6000826000018281548110611cd857611cd8612ab8565b9060005260206000200154905092915050565b818101828110156105455750600019610545565b60606105456001600160a01b03831660145b60606000611d20836002612b01565b611d2b9060026130f1565b6001600160401b03811115611d4257611d426126cf565b6040519080825280601f01601f191660200182016040528015611d6c576020820181803683370190505b509050600360fc1b81600081518110611d8757611d87612ab8565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611db657611db6612ab8565b60200101906001600160f81b031916908160001a9053506000611dda846002612b01565b611de59060016130f1565b90505b6001811115611e5d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e1957611e19612ab8565b1a60f81b828281518110611e2f57611e2f612ab8565b60200101906001600160f81b031916908160001a90535060049490941c93611e5681613104565b9050611de8565b508315610af75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610782565b6000818152600183016020526040812054611ef357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610545565b506000610545565b60008181526001830160205260408120548015611fe4576000611f1f600183612dab565b8554909150600090611f3390600190612dab565b9050818114611f98576000866000018281548110611f5357611f53612ab8565b9060005260206000200154905080876000018481548110611f7657611f76612ab8565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611fa957611fa961311b565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610545565b6000915050610545565b600082841480612000575061ffff8216155b1561200c575083611298565b5083600080808061202d61ffff87166120248a612151565b61ffff166118f7565b90505b61ffff8116156120835761204a8561ffff83168a0a612322565b9094509250831561206357829450808603955080820191505b61207c600261ffff83160461ffff168761ffff166118f7565b9050612030565b505b61ffff8516156120f6576120998488612322565b909350915082156120b857600019909401939092508290600101612085565b61ffff8116156120dd578584816120d1576120d1612e6a565b04935060001901612085565b6120e8848888611943565b600019909501949350612085565b600061210187612151565b90505b61ffff8216156121455760006121228261ffff168461ffff166118f7565b90508061ffff16880a868161213957612139612e6a565b04955090910390612104565b50505050949350505050565b60006003821015612164575060ff919050565b600482101561217557506080919050565b601082101561218657506040919050565b61010082101561219857506020919050565b611bdc8210156121aa57506014919050565b612c708210156121bc57506013919050565b614aa98210156121ce57506012919050565b6185548210156121e057506011919050565b620100008210156121f357506010919050565b620218378210156122065750600f919050565b6204e0468210156122195750600e919050565b620ced4c82101561222c5750600d919050565b6228514682101561223f5750600c919050565b629aa2ad8210156122525750600b919050565b6303080c018210156122665750600a919050565b6315c5cbbd82101561227a57506009919050565b64010000000082101561228f57506008919050565b6417c6a1f29f8210156122a457506007919050565b6506597fa94f5c8210156122ba57506006919050565b66093088c35d733b8210156122d157506005919050565b680100000000000000008210156122ea57506004919050565b6a285145f31ae515c447bb5782101561230557506003919050565b600160801b82101561231957506002919050565b5060015b919050565b600080836000036123395750600190506000612366565b8383028385828161234c5761234c612e6a565b041461235f576000809250925050612366565b6001925090505b9250929050565b60006020828403121561237f57600080fd5b81356001600160e01b031981168114610af757600080fd5b6000602082840312156123a957600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b828110156123fa576123ea84835180518252602090810151910152565b92840192908501906001016123cd565b5091979650505050505050565b6001600160a01b03811681146112aa57600080fd5b803561231d81612407565b60008060006060848603121561243c57600080fd5b833561244781612407565b95602085013595506040909401359392505050565b6000806040838503121561246f57600080fd5b82359150602083013561248181612407565b809150509250929050565b60008083601f84011261249e57600080fd5b5081356001600160401b038111156124b557600080fd5b6020830191508360208260061b850101111561236657600080fd5b600080602083850312156124e357600080fd5b82356001600160401b038111156124f957600080fd5b6125058582860161248c565b90969095509350505050565b60008083601f84011261252357600080fd5b5081356001600160401b0381111561253a57600080fd5b6020830191508360208260051b850101111561236657600080fd5b6000806000806000806000806080898b03121561257157600080fd5b88356001600160401b038082111561258857600080fd5b6125948c838d01612511565b909a50985060208b01359150808211156125ad57600080fd5b6125b98c838d01612511565b909850965060408b01359150808211156125d257600080fd5b6125de8c838d01612511565b909650945060608b01359150808211156125f757600080fd5b506126048b828c01612511565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612652578351151583529284019291840191600101612634565b50909695505050505050565b6000806020838503121561267157600080fd5b82356001600160401b038082111561268857600080fd5b818501915085601f83011261269c57600080fd5b8135818111156126ab57600080fd5b8660208285010111156126bd57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612707576127076126cf565b60405290565b604080519081016001600160401b0381118282101715612707576127076126cf565b604051606081016001600160401b0381118282101715612707576127076126cf565b604051601f8201601f191681016001600160401b0381118282101715612779576127796126cf565b604052919050565b60006001600160401b0382111561279a5761279a6126cf565b50601f01601f191660200190565b600082601f8301126127b957600080fd5b81356127cc6127c782612781565b612751565b8181528460208386010111156127e157600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561281057600080fd5b81356001600160401b0381111561282657600080fd5b611298848285016127a8565b6000806040838503121561284557600080fd5b50508035926020909101359150565b60006040828403121561286657600080fd5b50919050565b60008060008060008060008060008060006101408c8e03121561288e57600080fd5b6128988c35612407565b8b359a506001600160401b038060208e013511156128b557600080fd5b6128c58e60208f01358f01612511565b909b50995060408d01358110156128db57600080fd5b506128ec8d60408e01358e0161248c565b909850965060608c013595506129058d60808e01612854565b945060c08c013561291581612407565b935061292360e08d0161241c565b92506101008c013591506101208c013590509295989b509295989b9093969950565b6000806000806040858703121561295b57600080fd5b84356001600160401b038082111561297257600080fd5b61297e88838901612511565b9096509450602087013591508082111561299757600080fd5b506129a487828801612511565b95989497509550505050565b6000604082840312156129c257600080fd5b610af78383612854565b600080604083850312156129df57600080fd5b82356001600160401b038111156129f557600080fd5b612a01858286016127a8565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610af7565b6001600160401b03811681146112aa57600080fd5b600060808284031215612a5d57600080fd5b612a656126e5565b82518060070b8114612a7657600080fd5b81526020830151612a8681612a36565b60208201526040830151600381900b8114612aa057600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612ae057600080fd5b8135610af781612407565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761054557610545612aeb565b8051801515811461231d57600080fd5b600060208284031215612b3a57600080fd5b610af782612b18565b600060208284031215612b5557600080fd5b8151610af781612407565b60005b83811015612b7b578181015183820152602001612b63565b50506000910152565b600060808284031215612b9657600080fd5b612b9e6126e5565b90508151612bab81612407565b81526020820151612bbb81612407565b60208201526040820151612bce81612a36565b6040820152612bdf60608301612b18565b606082015292915050565b60006020808385031215612bfd57600080fd5b82516001600160401b0380821115612c1457600080fd5b9084019060a08287031215612c2857600080fd5b612c3061270d565b825182811115612c3f57600080fd5b830160608189031215612c5157600080fd5b612c5961272f565b815160ff81168114612c6a57600080fd5b81528186015186820152604082015184811115612c8657600080fd5b82019350601f84018913612c9957600080fd5b83519150612ca96127c783612781565b8281528987848701011115612cbd57600080fd5b612ccc83888301898801612b60565b6040820152825250612ce087848601612b84565b848201528094505050505092915050565b60008082840360e0811215612d0557600080fd5b60c0811215612d1357600080fd5b612d1b61272f565b84518152602085015160208201526080603f1983011215612d3b57600080fd5b612d436126e5565b91506040850151612d5381612407565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b600060208284031215612da057600080fd5b8151610af781612a36565b8181038181111561054557610545612aeb565b600381810b9083900b01637fffffff8113637fffffff198212171561054557610545612aeb565b600060408284031215612df757600080fd5b612dff61270d565b82358152602083013560208201528091505092915050565b60008160030b637fffffff198103612e3157612e31612aeb565b60000392915050565b80820260008212600160ff1b84141615612e5657612e56612aeb565b818105831482151761054557610545612aeb565b634e487b7160e01b600052601260045260246000fd5b600082612e8f57612e8f612e6a565b600160ff1b821460001984141615612ea957612ea9612aeb565b500590565b6001600160c01b03811681146112aa57600080fd5b8135612ece81612eae565b81546001600160c01b03199081166001600160c01b039290921691821783556020840135612efb81612a36565b60c01b1617905550565b600060208284031215612f1757600080fd5b8135610af781612eae565b600060208284031215612f3457600080fd5b8135610af781612a36565b600181815b80851115612f7a578160001904821115612f6057612f60612aeb565b80851615612f6d57918102915b93841c9390800290612f44565b509250929050565b600082612f9157506001610545565b81612f9e57506000610545565b8160018114612fb45760028114612fbe57612fda565b6001915050610545565b60ff841115612fcf57612fcf612aeb565b50506001821b610545565b5060208310610133831016604e8410600b8410161715612ffd575081810a610545565b6130078383612f3f565b806000190482111561301b5761301b612aeb565b029392505050565b6000610af763ffffffff841683612f82565b60008261304457613044612e6a565b500490565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613081816017850160208801612b60565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516130b2816028840160208801612b60565b01602801949350505050565b60208152600082518060208401526130dd816040850160208701612b60565b601f01601f19169190910160400192915050565b8082018082111561054557610545612aeb565b60008161311357613113612aeb565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220722ea28f7ccafb656b478e4bbef9e9c323475159021273a45634f4d30ee74d4b64736f6c63430008150033", - "deployer": "0x0F68eDBE14C8f68481771016d7E2871d6a35DE11", + "contractAbsolutePath": "RNSDomainPrice.sol", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", + "deployer": "0x08295771719b138a241F45023B13CC868D72827D", "devdoc": { "version": 1, "kind": "dev", @@ -15678,6 +18780,13 @@ "usdPrices": "Array of prices in USD. Leave 2^256 - 1 to remove overriding." } }, + "bulkOverrideTiers(bytes32[],uint8[])": { + "details": "Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.", + "params": { + "lbHashes": "Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')", + "tiers": "Array of tiers. Leave 2^256 - 1 to remove overriding." + } + }, "bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])": { "details": "Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.", "params": { @@ -15711,6 +18820,9 @@ "getOverriddenRenewalFee(string)": { "details": "Returns the renewal fee of a label. Reverts if not overridden." }, + "getOverriddenTier(string)": { + "details": "Returns the tier of a label. Reverts if not overridden." + }, "getPythOracleConfig()": { "details": "Returns the Pyth oracle config." }, @@ -15739,6 +18851,15 @@ "getTaxRatio()": { "details": "Returns tax ratio." }, + "getTier(string)": { + "details": "Returns the tier of a label.", + "params": { + "label": "The domain label to register (Eg, 'foo' for 'foo.ron')." + }, + "returns": { + "tier": "The tier of the label." + } + }, "grantRole(bytes32,address)": { "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." }, @@ -15800,17 +18921,20 @@ }, "TaxRatioUpdated(address,uint256)": { "details": "Emitted when the renewal reservation ratio is updated." + }, + "TierOverridingUpdated(address,bytes32,uint8)": { + "details": "Emitted when the tier of a domain is overridden." } } }, "isFoundry": true, - "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo1\",\"type\":\"int32\"},{\"internalType\":\"int32\",\"name\":\"expo2\",\"type\":\"int32\"},{\"internalType\":\"int64\",\"name\":\"price1\",\"type\":\"int64\"}],\"name\":\"ErrComputedPriceTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"}],\"name\":\"ErrExponentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedAuctionDomainExpiry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"PeriodNumOverflowedUint16\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RenewalFeeIsNotOverriden\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"DomainPriceScaleRuleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proofHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"setType\",\"type\":\"uint256\"}],\"name\":\"DomainPriceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxLength\",\"type\":\"uint256\"}],\"name\":\"MaxRenewalFeeLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"PythOracleConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"renewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeByLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inverseRenewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeOverridingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"TaxRatioUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OVERRIDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"usdPrices\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideRenewalFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkSetDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkTrySetDomainPrice\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"updated\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"name\":\"convertRONToUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"name\":\"convertUSDToRON\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getDomainPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenRenewalFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPythOracleConfig\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"getRenewalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"basePrice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"tax\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRenewalFeeByLengths\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScaleDownRuleForDomainPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"taxRatio\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"domainPriceScaleRule\",\"type\":\"tuple\"},{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"contract INSAuction\",\"name\":\"auction\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"setPythOracleConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"name\":\"setRenewalFeeByLengths\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"name\":\"setScaleDownRuleForDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setTaxRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DomainPriceScaleRuleUpdated(address,uint192,uint64)\":{\"details\":\"Emitted when the rule to rescale domain price is updated.\"},\"DomainPriceUpdated(address,bytes32,uint256,bytes32,uint256)\":{\"details\":\"Emitted when the domain price is updated.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MaxRenewalFeeLengthUpdated(address,uint256)\":{\"details\":\"Emitted when the maximum length of renewal fee is updated.\"},\"PythOracleConfigUpdated(address,address,uint256,bytes32)\":{\"details\":\"Emitted when the Pyth Oracle config is updated.\"},\"RenewalFeeByLengthUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the renew fee is updated.\"},\"RenewalFeeOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TaxRatioUpdated(address,uint256)\":{\"details\":\"Emitted when the renewal reservation ratio is updated.\"}},\"kind\":\"dev\",\"methods\":{\"bulkOverrideRenewalFees(bytes32[],uint256[])\":{\"details\":\"Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"usdPrices\":\"Array of prices in USD. Leave 2^256 - 1 to remove overriding.\"}},\"bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"convertRONToUSD(uint256)\":{\"details\":\"Returns the converted amount from RON to USD.\"},\"convertUSDToRON(uint256)\":{\"details\":\"Returns the converted amount from USD to RON.\"},\"getDomainPrice(string)\":{\"details\":\"Return the domain price.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getOverriddenRenewalFee(string)\":{\"details\":\"Returns the renewal fee of a label. Reverts if not overridden.\"},\"getPythOracleConfig()\":{\"details\":\"Returns the Pyth oracle config.\"},\"getRenewalFee(string,uint256)\":{\"details\":\"Returns the renewal fee in USD and RON.\",\"params\":{\"duration\":\"Amount of second(s).\",\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getRenewalFeeByLengths()\":{\"details\":\"Returns the renewal fee by lengths.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getScaleDownRuleForDomainPrice()\":{\"details\":\"Returns the percentage to scale from domain price each period.\"},\"getTaxRatio()\":{\"details\":\"Returns tax ratio.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setPythOracleConfig(address,uint256,bytes32)\":{\"details\":\"Sets the Pyth oracle config. Requirements: - The method caller is admin. Emits events {PythOracleConfigUpdated}.\"},\"setRenewalFeeByLengths((uint256,uint256)[])\":{\"details\":\"Sets the renewal fee by lengths Requirements: - The method caller is admin. Emits events {RenewalFeeByLengthUpdated}. Emits an event {MaxRenewalFeeLengthUpdated} optionally.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"details\":\"Sets the percentage to scale from domain price each period. Requirements: - The method caller is admin. Emits events {DomainPriceScaleRuleUpdated}.\"},\"setTaxRatio(uint256)\":{\"details\":\"Sets renewal reservation ratio. Requirements: - The method caller is admin. Emits an event {TaxRatioUpdated}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"MAX_PERCENTAGE\":{\"details\":\"Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\"},\"OPERATOR_ROLE\":{\"details\":\"Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\"},\"OVERRIDER_ROLE\":{\"details\":\"Returns the overrider role.\"},\"USD_DECIMALS\":{\"details\":\"Decimal for USD.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_auction\":{\"details\":\"RNSAuction contract\"},\"_dp\":{\"details\":\"Mapping from name => domain price in USD\"},\"_dpDownScaler\":{\"details\":\"The percentage scale from domain price each period\"},\"_maxAcceptableAge\":{\"details\":\"Max acceptable age of the price oracle request\"},\"_pyth\":{\"details\":\"Pyth oracle contract\"},\"_pythIdForRONUSD\":{\"details\":\"Price feed ID on Pyth for RON/USD\"},\"_rnFee\":{\"details\":\"Mapping from domain length => renewal fee in USD\"},\"_rnFeeOverriding\":{\"details\":\"Mapping from name => inverse bitwise of renewal fee overriding.\"},\"_rnfMaxLength\":{\"details\":\"Max length of the renewal fee\"},\"_taxRatio\":{\"details\":\"Extra fee for renewals based on the current domain price.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getOverriddenRenewalFee(string)\":{\"notice\":\"This method is to help developers check the domain renewal fee overriding. Consider using method {getRenewalFee} instead for full handling of renewal fees.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"notice\":\"Applies for the business rule: -x% each y seconds.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RNSDomainPrice.sol\":\"RNSDomainPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@pythnetwork/=lib/pyth-sdk-solidity/\",\":@rns-contracts/=src/\",\":buffer/=lib/buffer/contracts/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/script/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RNSDomainPrice.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { IPyth, PythStructs } from \\\"@pythnetwork/IPyth.sol\\\";\\nimport { INSUnified } from \\\"./interfaces/INSUnified.sol\\\";\\nimport { INSAuction } from \\\"./interfaces/INSAuction.sol\\\";\\nimport { INSDomainPrice } from \\\"./interfaces/INSDomainPrice.sol\\\";\\nimport { PeriodScaler, LibPeriodScaler, Math } from \\\"./libraries/math/PeriodScalingUtils.sol\\\";\\nimport { TimestampWrapper } from \\\"./libraries/TimestampWrapperUtils.sol\\\";\\nimport { LibSafeRange } from \\\"./libraries/math/LibSafeRange.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { PythConverter } from \\\"./libraries/pyth/PythConverter.sol\\\";\\n\\ncontract RNSDomainPrice is Initializable, AccessControlEnumerable, INSDomainPrice {\\n using LibString for *;\\n using LibRNSDomain for string;\\n using LibPeriodScaler for PeriodScaler;\\n using PythConverter for PythStructs.Price;\\n\\n /// @inheritdoc INSDomainPrice\\n uint8 public constant USD_DECIMALS = 18;\\n /// @inheritdoc INSDomainPrice\\n uint64 public constant MAX_PERCENTAGE = 100_00;\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OVERRIDER_ROLE = keccak256(\\\"OVERRIDER_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Pyth oracle contract\\n IPyth internal _pyth;\\n /// @dev RNSAuction contract\\n INSAuction internal _auction;\\n /// @dev Extra fee for renewals based on the current domain price.\\n uint256 internal _taxRatio;\\n /// @dev Max length of the renewal fee\\n uint256 internal _rnfMaxLength;\\n /// @dev Max acceptable age of the price oracle request\\n uint256 internal _maxAcceptableAge;\\n /// @dev Price feed ID on Pyth for RON/USD\\n bytes32 internal _pythIdForRONUSD;\\n /// @dev The percentage scale from domain price each period\\n PeriodScaler internal _dpDownScaler;\\n\\n /// @dev Mapping from domain length => renewal fee in USD\\n mapping(uint256 length => uint256 usdPrice) internal _rnFee;\\n /// @dev Mapping from name => domain price in USD\\n mapping(bytes32 lbHash => TimestampWrapper usdPrice) internal _dp;\\n /// @dev Mapping from name => inverse bitwise of renewal fee overriding.\\n mapping(bytes32 lbHash => uint256 usdPrice) internal _rnFeeOverriding;\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address[] calldata operators,\\n RenewalFee[] calldata renewalFees,\\n uint256 taxRatio,\\n PeriodScaler calldata domainPriceScaleRule,\\n IPyth pyth,\\n INSAuction auction,\\n uint256 maxAcceptableAge,\\n bytes32 pythIdForRONUSD\\n ) external initializer {\\n uint256 length = operators.length;\\n bytes32 operatorRole = OPERATOR_ROLE;\\n\\n for (uint256 i; i < length;) {\\n _setupRole(operatorRole, operators[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _auction = auction;\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n _setRenewalFeeByLengths(renewalFees);\\n _setTaxRatio(taxRatio);\\n _setDomainPriceScaleRule(domainPriceScaleRule);\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) {\\n return (_pyth, _maxAcceptableAge, _pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD)\\n external\\n onlyRole(DEFAULT_ADMIN_ROLE)\\n {\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees) {\\n uint256 rnfMaxLength = _rnfMaxLength;\\n renewalFees = new RenewalFee[](rnfMaxLength);\\n uint256 len;\\n\\n for (uint256 i; i < rnfMaxLength;) {\\n unchecked {\\n len = i + 1;\\n renewalFees[i].labelLength = len;\\n renewalFees[i].fee = _rnFee[len];\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setRenewalFeeByLengths(renewalFees);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTaxRatio() external view returns (uint256 ratio) {\\n return _taxRatio;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setTaxRatio(uint256 ratio) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setTaxRatio(ratio);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory scaleRule) {\\n return _dpDownScaler;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setDomainPriceScaleRule(scaleRule);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenRenewalFee(string calldata label) external view returns (uint256 usdFee) {\\n usdFee = _rnFeeOverriding[label.hashLabel()];\\n if (usdFee == 0) revert RenewalFeeIsNotOverriden();\\n return ~usdFee;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices)\\n external\\n onlyRole(OVERRIDER_ROLE)\\n {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != usdPrices.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~usdPrices[i];\\n _rnFeeOverriding[lbHashes[i]] = inverseBitwise;\\n emit RenewalFeeOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OPERATOR_ROLE) returns (bool[] memory updated) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n updated = new bool[](length);\\n\\n for (uint256 i; i < length;) {\\n updated[i] = _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], false);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], true);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getDomainPrice(string memory label) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n usdPrice = _getDomainPrice(label.hashLabel());\\n ronPrice = convertUSDToRON(usdPrice);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFee(string memory label, uint256 duration)\\n public\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax)\\n {\\n uint256 nameLen = label.strlen();\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n\\n if (overriddenRenewalFee != 0) {\\n basePrice.usd = duration * ~overriddenRenewalFee;\\n } else {\\n uint256 renewalFeeByLength = _rnFee[Math.min(nameLen, _rnfMaxLength)];\\n basePrice.usd = duration * renewalFeeByLength;\\n uint256 id = LibRNSDomain.toId(LibRNSDomain.RON_ID, label);\\n INSAuction auction = _auction;\\n if (auction.reserved(id)) {\\n INSUnified rns = auction.getRNSUnified();\\n uint256 expiry = LibSafeRange.addWithUpperbound(rns.getRecord(id).mut.expiry, duration, type(uint64).max);\\n (INSAuction.DomainAuction memory domainAuction,) = auction.getAuction(id);\\n uint256 claimedAt = domainAuction.bid.claimedAt;\\n if (claimedAt != 0 && expiry - claimedAt > auction.MAX_AUCTION_DOMAIN_EXPIRY()) {\\n revert ExceedAuctionDomainExpiry();\\n }\\n // Tax is added to the name reserved for the auction\\n tax.usd = Math.mulDiv(_taxRatio, _getDomainPrice(lbHash), MAX_PERCENTAGE);\\n }\\n }\\n\\n tax.ron = convertUSDToRON(tax.usd);\\n basePrice.ron = convertUSDToRON(basePrice.usd);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertUSDToRON(uint256 usdWei) public view returns (uint256 ronWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).inverse({ expo: -18 }).mul({\\n inpWei: usdWei,\\n inpDecimals: int32(uint32(USD_DECIMALS)),\\n outDecimals: 18\\n });\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertRONToUSD(uint256 ronWei) public view returns (uint256 usdWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).mul({\\n inpWei: ronWei,\\n inpDecimals: 18,\\n outDecimals: int32(uint32(USD_DECIMALS))\\n });\\n }\\n\\n /**\\n * @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid.\\n */\\n function _requireBulkSetDomainPriceArgumentsValid(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) internal pure returns (uint256 length) {\\n length = lbHashes.length;\\n if (length == 0 || ronPrices.length != length || proofHashes.length != length || setTypes.length != length) {\\n revert InvalidArrayLength();\\n }\\n }\\n\\n /**\\n * @dev Helper method to set domain price.\\n *\\n * Emits an event {DomainPriceUpdated} optionally.\\n */\\n function _setDomainPrice(\\n address operator,\\n bytes32 lbHash,\\n uint256 ronPrice,\\n bytes32 proofHash,\\n uint256 setType,\\n bool forced\\n ) internal returns (bool updated) {\\n uint256 usdPrice = convertRONToUSD(ronPrice);\\n TimestampWrapper storage dp = _dp[lbHash];\\n updated = forced || dp.value < usdPrice;\\n\\n if (updated) {\\n dp.value = usdPrice;\\n dp.timestamp = block.timestamp;\\n emit DomainPriceUpdated(operator, lbHash, usdPrice, proofHash, setType);\\n }\\n }\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function _setTaxRatio(uint256 ratio) internal {\\n _taxRatio = ratio;\\n emit TaxRatioUpdated(_msgSender(), ratio);\\n }\\n\\n /**\\n * @dev Sets domain price scale rule.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n */\\n function _setDomainPriceScaleRule(PeriodScaler calldata domainPriceScaleRule) internal {\\n _dpDownScaler = domainPriceScaleRule;\\n emit DomainPriceScaleRuleUpdated(_msgSender(), domainPriceScaleRule.ratio, domainPriceScaleRule.period);\\n }\\n\\n /**\\n * @dev Sets renewal fee.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function _setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) internal {\\n address operator = _msgSender();\\n RenewalFee memory renewalFee;\\n uint256 length = renewalFees.length;\\n uint256 maxRenewalFeeLength = _rnfMaxLength;\\n\\n for (uint256 i; i < length;) {\\n renewalFee = renewalFees[i];\\n maxRenewalFeeLength = Math.max(maxRenewalFeeLength, renewalFee.labelLength);\\n _rnFee[renewalFee.labelLength] = renewalFee.fee;\\n emit RenewalFeeByLengthUpdated(operator, renewalFee.labelLength, renewalFee.fee);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n if (maxRenewalFeeLength != _rnfMaxLength) {\\n _rnfMaxLength = maxRenewalFeeLength;\\n emit MaxRenewalFeeLengthUpdated(operator, maxRenewalFeeLength);\\n }\\n }\\n\\n /**\\n * @dev Sets Pyth Oracle config.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function _setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) internal {\\n _pyth = pyth;\\n _maxAcceptableAge = maxAcceptableAge;\\n _pythIdForRONUSD = pythIdForRONUSD;\\n emit PythOracleConfigUpdated(_msgSender(), pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @dev Returns the current domain price applied the business rule: deduced x% each y seconds.\\n */\\n function _getDomainPrice(bytes32 lbHash) internal view returns (uint256) {\\n TimestampWrapper storage dp = _dp[lbHash];\\n uint256 lastSyncedAt = dp.timestamp;\\n if (lastSyncedAt == 0) return 0;\\n\\n uint256 passedDuration = block.timestamp - lastSyncedAt;\\n return _dpDownScaler.scaleDown({ v: dp.value, maxR: MAX_PERCENTAGE, dur: passedDuration });\\n }\\n}\\n\",\"keccak256\":\"0xb317170571c1e6fbb5504f6348a4a713133a3e457b8cfdb4a225ed075e455f16\",\"license\":\"MIT\"},\"src/interfaces/INSAuction.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { EventRange } from \\\"../libraries/LibEventRange.sol\\\";\\n\\ninterface INSAuction {\\n error NotYetEnded();\\n error NoOneBidded();\\n error NullAssignment();\\n error AlreadyBidding();\\n error RatioIsTooLarge();\\n error NameNotReserved();\\n error InvalidEventRange();\\n error QueryIsNotInPeriod();\\n error InsufficientAmount();\\n error InvalidArrayLength();\\n error ContractBidderIsForbidden();\\n error EventIsNotCreatedOrAlreadyStarted();\\n\\n struct Bid {\\n address payable bidder;\\n uint256 price;\\n uint256 timestamp;\\n uint256 claimedAt;\\n }\\n\\n struct DomainAuction {\\n bytes32 auctionId;\\n uint256 startingPrice;\\n Bid bid;\\n }\\n\\n /// @dev Emitted when an auction is set.\\n event AuctionEventSet(bytes32 indexed auctionId, EventRange range);\\n /// @dev Emitted when the labels are listed for auction.\\n event LabelsListed(bytes32 indexed auctionId, uint256[] ids, uint256[] startingPrices);\\n /// @dev Emitted when a bid is placed for a name.\\n event BidPlaced(\\n bytes32 indexed auctionId,\\n uint256 indexed id,\\n uint256 price,\\n address payable bidder,\\n uint256 previousPrice,\\n address previousBidder\\n );\\n /// @dev Emitted when the treasury is updated.\\n event TreasuryUpdated(address indexed addr);\\n /// @dev Emitted when bid gap ratio is updated.\\n event BidGapRatioUpdated(uint256 ratio);\\n\\n /**\\n * @dev The maximum expiry duration\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev The maximum expiry duration of a domain after transferring to bidder.\\n */\\n function MAX_AUCTION_DOMAIN_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint256);\\n\\n /**\\n * @dev The expiry duration of a domain after transferring to bidder.\\n */\\n function DOMAIN_EXPIRY_DURATION() external pure returns (uint64);\\n\\n /**\\n * @dev Claims domain names for auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param labels The domain names. Eg, ['foo'] for 'foo.ron'\\n * @return ids The id corresponding for namehash of domain names.\\n */\\n function bulkRegister(string[] calldata labels) external returns (uint256[] memory ids);\\n\\n /**\\n * @dev Checks whether a domain name is currently reserved for auction or not.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function reserved(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Creates a new auction to sale with a specific time period.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n *\\n * @return auctionId The auction id\\n * @notice Please use the method `setAuctionNames` to list all the reserved names.\\n */\\n function createAuctionEvent(EventRange calldata range) external returns (bytes32 auctionId);\\n\\n /**\\n * @dev Updates the auction details.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n */\\n function setAuctionEvent(bytes32 auctionId, EventRange calldata range) external;\\n\\n /**\\n * @dev Returns the event range of an auction.\\n */\\n function getAuctionEvent(bytes32 auctionId) external view returns (EventRange memory);\\n\\n /**\\n * @dev Lists reserved names to sale in a specified auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n * - Array length are matched and larger than 0.\\n * - Only allow to set when the domain is:\\n * + Not in any auction.\\n * + Or, in the current auction.\\n * + Or, this name is not bided.\\n *\\n * Emits an event {LabelsListed}.\\n *\\n * Note: If the name is already listed, this method replaces with a new input value.\\n *\\n * @param ids The namehashes id of domain names. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function listNamesForAuction(bytes32 auctionId, uint256[] calldata ids, uint256[] calldata startingPrices) external;\\n\\n /**\\n * @dev Places a bid for a domain name.\\n *\\n * Requirements:\\n * - The name is listed, or the auction is happening.\\n * - The msg.value is larger than the current bid price or the auction starting price.\\n *\\n * Emits an event {BidPlaced}.\\n *\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function placeBid(uint256 id) external payable;\\n\\n /**\\n * @dev Returns the highest bid and address of the bidder.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function getAuction(uint256 id) external view returns (DomainAuction memory, uint256 beatPrice);\\n\\n /**\\n * @dev Bulk claims the bid name.\\n *\\n * Requirements:\\n * - Must be called after ended time.\\n * - The method caller can be anyone.\\n *\\n * @param ids The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function bulkClaimBidNames(uint256[] calldata ids) external returns (uint256[] memory claimedAts);\\n\\n /**\\n * @dev Returns the treasury.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Returns the gap ratio between 2 bids with the starting price. Value in range [0;100_00] is 0%-100%.\\n */\\n function getBidGapRatio() external view returns (uint256);\\n\\n /**\\n * @dev Sets the treasury.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {TreasuryUpdated}.\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Sets commission ratio. Value in range [0;100_00] is 0%-100%.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {BidGapRatioUpdated}.\\n */\\n function setBidGapRatio(uint256) external;\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n}\\n\",\"keccak256\":\"0x451e7a2f2e5c1c62e1b14ed011a879639a748e24fde0c1fcf27f691bb7946660\",\"license\":\"MIT\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0xcb57a6120bbe131d1c2a2ae72ce6a33ab95f5da4cae85e9cd1731496e26db7b1\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/libraries/LibEventRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct EventRange {\\n uint256 startedAt;\\n uint256 endedAt;\\n}\\n\\nlibrary LibEventRange {\\n /**\\n * @dev Checks whether the event range is valid.\\n */\\n function valid(EventRange calldata range) internal pure returns (bool) {\\n return range.startedAt <= range.endedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is not yet started.\\n */\\n function isNotYetStarted(EventRange memory range) internal view returns (bool) {\\n return block.timestamp < range.startedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is ended or not.\\n */\\n function isEnded(EventRange memory range) internal view returns (bool) {\\n return range.endedAt <= block.timestamp;\\n }\\n\\n /**\\n * @dev Returns whether the current block is in period.\\n */\\n function isInPeriod(EventRange memory range) internal view returns (bool) {\\n return range.startedAt <= block.timestamp && block.timestamp < range.endedAt;\\n }\\n}\\n\",\"keccak256\":\"0x95bf015c4245919cbcbcd810dd597fdb23eb4e58b62df8ef74b1c8c60a969bea\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/TimestampWrapperUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct TimestampWrapper {\\n uint256 value;\\n uint256 timestamp;\\n}\\n\",\"keccak256\":\"0x18488d153ebc8579907a85cb7e0be828d0de7c571c9f3368a6d200574b012018\",\"license\":\"MIT\"},\"src/libraries/math/LibSafeRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibSafeRange {\\n function add(uint256 a, uint256 b) internal pure returns (uint256 c) {\\n unchecked {\\n c = a + b;\\n if (c < a) return type(uint256).max;\\n }\\n }\\n\\n /**\\n * @dev Returns value of a + b; in case result is larger than upperbound, upperbound is returned.\\n */\\n function addWithUpperbound(uint256 a, uint256 b, uint256 ceil) internal pure returns (uint256 c) {\\n if (a > ceil || b > ceil) return ceil;\\n c = add(a, b);\\n if (c > ceil) return ceil;\\n }\\n}\\n\",\"keccak256\":\"0x12cf5f592a2d80b9c1b0ea11b8fe2b3ed42fc6d62303ba667edc56464baa8810\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/pyth/PythConverter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PythStructs } from \\\"@pythnetwork/PythStructs.sol\\\";\\nimport { PowMath } from \\\"../math/PowMath.sol\\\";\\n\\nlibrary PythConverter {\\n error ErrExponentTooLarge(int32 expo);\\n error ErrComputedPriceTooLarge(int32 expo1, int32 expo2, int64 price1);\\n\\n /**\\n * @dev Multiples and converts the price into token wei with decimals `outDecimals`.\\n */\\n function mul(PythStructs.Price memory self, uint256 inpWei, int32 inpDecimals, int32 outDecimals)\\n internal\\n pure\\n returns (uint256 outWei)\\n {\\n return Math.mulDiv(\\n inpWei, PowMath.exp10(uint256(int256(self.price)), outDecimals + self.expo), PowMath.exp10(1, inpDecimals)\\n );\\n }\\n\\n /**\\n * @dev Inverses token price of tokenA/tokenB to tokenB/tokenA.\\n */\\n function inverse(PythStructs.Price memory self, int32 expo) internal pure returns (PythStructs.Price memory outPrice) {\\n uint256 exp10p1 = PowMath.exp10(1, -self.expo);\\n if (exp10p1 > uint256(type(int256).max)) revert ErrExponentTooLarge(self.expo);\\n uint256 exp10p2 = PowMath.exp10(1, -expo);\\n if (exp10p2 > uint256(type(int256).max)) revert ErrExponentTooLarge(expo);\\n int256 price = (int256(exp10p1) * int256(exp10p2)) / self.price;\\n if (price > type(int64).max) revert ErrComputedPriceTooLarge(self.expo, expo, self.price);\\n\\n return PythStructs.Price({ price: int64(price), conf: self.conf, expo: expo, publishTime: self.publishTime });\\n }\\n}\\n\",\"keccak256\":\"0x87ade16f6e931f6a3ead7706b0e550ee2c2cdee0be2f218488df93588e787f06\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", - "nonce": 266, - "numDeployments": 1, + "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo1\",\"type\":\"int32\"},{\"internalType\":\"int32\",\"name\":\"expo2\",\"type\":\"int32\"},{\"internalType\":\"int64\",\"name\":\"price1\",\"type\":\"int64\"}],\"name\":\"ErrComputedPriceTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"}],\"name\":\"ErrExponentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedAuctionDomainExpiry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"PeriodNumOverflowedUint16\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RenewalFeeIsNotOverriden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TierIsNotOverriden\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"DomainPriceScaleRuleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proofHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"setType\",\"type\":\"uint256\"}],\"name\":\"DomainPriceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxLength\",\"type\":\"uint256\"}],\"name\":\"MaxRenewalFeeLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"PythOracleConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"renewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeByLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inverseRenewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeOverridingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"TaxRatioUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"name\":\"TierOverridingUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OVERRIDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"usdPrices\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideRenewalFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"enum INSDomainPrice.Tier[]\",\"name\":\"tiers\",\"type\":\"uint8[]\"}],\"name\":\"bulkOverrideTiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkSetDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkTrySetDomainPrice\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"updated\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"name\":\"convertRONToUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"name\":\"convertUSDToRON\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getDomainPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenRenewalFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPythOracleConfig\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"getRenewalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"basePrice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"tax\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRenewalFeeByLengths\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScaleDownRuleForDomainPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"taxRatio\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"domainPriceScaleRule\",\"type\":\"tuple\"},{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"contract INSAuction\",\"name\":\"auction\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"setPythOracleConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"name\":\"setRenewalFeeByLengths\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"name\":\"setScaleDownRuleForDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setTaxRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DomainPriceScaleRuleUpdated(address,uint192,uint64)\":{\"details\":\"Emitted when the rule to rescale domain price is updated.\"},\"DomainPriceUpdated(address,bytes32,uint256,bytes32,uint256)\":{\"details\":\"Emitted when the domain price is updated.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MaxRenewalFeeLengthUpdated(address,uint256)\":{\"details\":\"Emitted when the maximum length of renewal fee is updated.\"},\"PythOracleConfigUpdated(address,address,uint256,bytes32)\":{\"details\":\"Emitted when the Pyth Oracle config is updated.\"},\"RenewalFeeByLengthUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the renew fee is updated.\"},\"RenewalFeeOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TaxRatioUpdated(address,uint256)\":{\"details\":\"Emitted when the renewal reservation ratio is updated.\"},\"TierOverridingUpdated(address,bytes32,uint8)\":{\"details\":\"Emitted when the tier of a domain is overridden.\"}},\"kind\":\"dev\",\"methods\":{\"bulkOverrideRenewalFees(bytes32[],uint256[])\":{\"details\":\"Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"usdPrices\":\"Array of prices in USD. Leave 2^256 - 1 to remove overriding.\"}},\"bulkOverrideTiers(bytes32[],uint8[])\":{\"details\":\"Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"tiers\":\"Array of tiers. Leave 2^256 - 1 to remove overriding.\"}},\"bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"convertRONToUSD(uint256)\":{\"details\":\"Returns the converted amount from RON to USD.\"},\"convertUSDToRON(uint256)\":{\"details\":\"Returns the converted amount from USD to RON.\"},\"getDomainPrice(string)\":{\"details\":\"Return the domain price.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getOverriddenRenewalFee(string)\":{\"details\":\"Returns the renewal fee of a label. Reverts if not overridden.\"},\"getOverriddenTier(string)\":{\"details\":\"Returns the tier of a label. Reverts if not overridden.\"},\"getPythOracleConfig()\":{\"details\":\"Returns the Pyth oracle config.\"},\"getRenewalFee(string,uint256)\":{\"details\":\"Returns the renewal fee in USD and RON.\",\"params\":{\"duration\":\"Amount of second(s).\",\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getRenewalFeeByLengths()\":{\"details\":\"Returns the renewal fee by lengths.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getScaleDownRuleForDomainPrice()\":{\"details\":\"Returns the percentage to scale from domain price each period.\"},\"getTaxRatio()\":{\"details\":\"Returns tax ratio.\"},\"getTier(string)\":{\"details\":\"Returns the tier of a label.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"},\"returns\":{\"tier\":\"The tier of the label.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setPythOracleConfig(address,uint256,bytes32)\":{\"details\":\"Sets the Pyth oracle config. Requirements: - The method caller is admin. Emits events {PythOracleConfigUpdated}.\"},\"setRenewalFeeByLengths((uint256,uint256)[])\":{\"details\":\"Sets the renewal fee by lengths Requirements: - The method caller is admin. Emits events {RenewalFeeByLengthUpdated}. Emits an event {MaxRenewalFeeLengthUpdated} optionally.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"details\":\"Sets the percentage to scale from domain price each period. Requirements: - The method caller is admin. Emits events {DomainPriceScaleRuleUpdated}.\"},\"setTaxRatio(uint256)\":{\"details\":\"Sets renewal reservation ratio. Requirements: - The method caller is admin. Emits an event {TaxRatioUpdated}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"MAX_PERCENTAGE\":{\"details\":\"Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\"},\"OPERATOR_ROLE\":{\"details\":\"Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\"},\"OVERRIDER_ROLE\":{\"details\":\"Returns the overrider role.\"},\"TIER_1_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 1: > $200\"},\"TIER_2_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\"},\"USD_DECIMALS\":{\"details\":\"Decimal for USD.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_auction\":{\"details\":\"RNSAuction contract\"},\"_dp\":{\"details\":\"Mapping from name => domain price in USD\"},\"_dpDownScaler\":{\"details\":\"The percentage scale from domain price each period\"},\"_maxAcceptableAge\":{\"details\":\"Max acceptable age of the price oracle request\"},\"_pyth\":{\"details\":\"Pyth oracle contract\"},\"_pythIdForRONUSD\":{\"details\":\"Price feed ID on Pyth for RON/USD\"},\"_rnFee\":{\"details\":\"Mapping from domain length => renewal fee in USD\"},\"_rnFeeOverriding\":{\"details\":\"Mapping from name => inverse bitwise of renewal fee overriding.\"},\"_rnfMaxLength\":{\"details\":\"Max length of the renewal fee\"},\"_taxRatio\":{\"details\":\"Extra fee for renewals based on the current domain price.\"},\"_tierOverriding\":{\"details\":\"Mapping from label hash to overriden tier\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getOverriddenRenewalFee(string)\":{\"notice\":\"This method is to help developers check the domain renewal fee overriding. Consider using method {getRenewalFee} instead for full handling of renewal fees.\"},\"getOverriddenTier(string)\":{\"notice\":\"This method is to help developers check the domain tier overriding. Consider using method {getTier} instead for full handling of tiers.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"notice\":\"Applies for the business rule: -x% each y seconds.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RNSDomainPrice.sol\":\"RNSDomainPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@pythnetwork/=lib/pyth-sdk-solidity/\",\":@rns-contracts/=src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/script/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RNSDomainPrice.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { IPyth, PythStructs } from \\\"@pythnetwork/IPyth.sol\\\";\\nimport { INSUnified } from \\\"./interfaces/INSUnified.sol\\\";\\nimport { INSAuction } from \\\"./interfaces/INSAuction.sol\\\";\\nimport { INSDomainPrice } from \\\"./interfaces/INSDomainPrice.sol\\\";\\nimport { PeriodScaler, LibPeriodScaler, Math } from \\\"./libraries/math/PeriodScalingUtils.sol\\\";\\nimport { TimestampWrapper } from \\\"./libraries/TimestampWrapperUtils.sol\\\";\\nimport { LibSafeRange } from \\\"./libraries/math/LibSafeRange.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { PythConverter } from \\\"./libraries/pyth/PythConverter.sol\\\";\\n\\ncontract RNSDomainPrice is Initializable, AccessControlEnumerable, INSDomainPrice {\\n using LibString for *;\\n using LibRNSDomain for string;\\n using LibPeriodScaler for PeriodScaler;\\n using PythConverter for PythStructs.Price;\\n\\n /// @dev The threshold tier value (in USD) for Tier 1: > $200\\n uint256 private constant TIER_1_FROM_EXCLUDED_THRESHOLD = 200e18;\\n /// @dev The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\\n uint256 private constant TIER_2_FROM_EXCLUDED_THRESHOLD = 50e18;\\n /// @inheritdoc INSDomainPrice\\n uint8 public constant USD_DECIMALS = 18;\\n /// @inheritdoc INSDomainPrice\\n uint64 public constant MAX_PERCENTAGE = 100_00;\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OVERRIDER_ROLE = keccak256(\\\"OVERRIDER_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Pyth oracle contract\\n IPyth internal _pyth;\\n /// @dev RNSAuction contract\\n INSAuction internal _auction;\\n /// @dev Extra fee for renewals based on the current domain price.\\n uint256 internal _taxRatio;\\n /// @dev Max length of the renewal fee\\n uint256 internal _rnfMaxLength;\\n /// @dev Max acceptable age of the price oracle request\\n uint256 internal _maxAcceptableAge;\\n /// @dev Price feed ID on Pyth for RON/USD\\n bytes32 internal _pythIdForRONUSD;\\n /// @dev The percentage scale from domain price each period\\n PeriodScaler internal _dpDownScaler;\\n\\n /// @dev Mapping from domain length => renewal fee in USD\\n mapping(uint256 length => uint256 usdPrice) internal _rnFee;\\n /// @dev Mapping from name => domain price in USD\\n mapping(bytes32 lbHash => TimestampWrapper usdPrice) internal _dp;\\n /// @dev Mapping from name => inverse bitwise of renewal fee overriding.\\n mapping(bytes32 lbHash => uint256 usdPrice) internal _rnFeeOverriding;\\n /// @dev Mapping from label hash to overriden tier\\n mapping(bytes32 lbHash => uint8 tier) internal _tierOverriding;\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address[] calldata operators,\\n RenewalFee[] calldata renewalFees,\\n uint256 taxRatio,\\n PeriodScaler calldata domainPriceScaleRule,\\n IPyth pyth,\\n INSAuction auction,\\n uint256 maxAcceptableAge,\\n bytes32 pythIdForRONUSD\\n ) external initializer {\\n uint256 length = operators.length;\\n bytes32 operatorRole = OPERATOR_ROLE;\\n\\n for (uint256 i; i < length;) {\\n _setupRole(operatorRole, operators[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _auction = auction;\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n _setRenewalFeeByLengths(renewalFees);\\n _setTaxRatio(taxRatio);\\n _setDomainPriceScaleRule(domainPriceScaleRule);\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) {\\n return (_pyth, _maxAcceptableAge, _pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD)\\n external\\n onlyRole(DEFAULT_ADMIN_ROLE)\\n {\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees) {\\n uint256 rnfMaxLength = _rnfMaxLength;\\n renewalFees = new RenewalFee[](rnfMaxLength);\\n uint256 len;\\n\\n for (uint256 i; i < rnfMaxLength;) {\\n unchecked {\\n len = i + 1;\\n renewalFees[i].labelLength = len;\\n renewalFees[i].fee = _rnFee[len];\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setRenewalFeeByLengths(renewalFees);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTaxRatio() external view returns (uint256 ratio) {\\n return _taxRatio;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setTaxRatio(uint256 ratio) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setTaxRatio(ratio);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory scaleRule) {\\n return _dpDownScaler;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setDomainPriceScaleRule(scaleRule);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenRenewalFee(string calldata label) external view returns (uint256 usdFee) {\\n usdFee = _rnFeeOverriding[label.hashLabel()];\\n if (usdFee == 0) revert RenewalFeeIsNotOverriden();\\n return ~usdFee;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenTier(string calldata label) external view returns (Tier tier) {\\n uint8 tierValue = _tierOverriding[label.hashLabel()];\\n if (tierValue == 0) revert TierIsNotOverriden();\\n return Tier(~tierValue);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices)\\n external\\n onlyRole(OVERRIDER_ROLE)\\n {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != usdPrices.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~usdPrices[i];\\n _rnFeeOverriding[lbHashes[i]] = inverseBitwise;\\n emit RenewalFeeOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != tiers.length) revert InvalidArrayLength();\\n uint8 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~uint8(tiers[i]);\\n _tierOverriding[lbHashes[i]] = inverseBitwise;\\n emit TierOverridingUpdated(operator, lbHashes[i], tiers[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OPERATOR_ROLE) returns (bool[] memory updated) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n updated = new bool[](length);\\n\\n for (uint256 i; i < length;) {\\n updated[i] = _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], false);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], true);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getDomainPrice(string memory label) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n usdPrice = _getDomainPrice(label.hashLabel());\\n ronPrice = convertUSDToRON(usdPrice);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTier(string memory label) public view returns (Tier tier) {\\n bytes32 lbHash = label.hashLabel();\\n uint8 overriddenTier = _tierOverriding[lbHash];\\n\\n if (overriddenTier != 0) return Tier(~overriddenTier);\\n\\n (UnitPrice memory yearlyRenewalFeeByLength,,) = _tryGetRenewalFee({ label: label, duration: 365 days });\\n uint256 tierValue = yearlyRenewalFeeByLength.usd + _getDomainPrice(lbHash) / 2;\\n\\n if (tierValue > TIER_1_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier1;\\n } else if (tierValue > TIER_2_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier2;\\n } else {\\n return Tier.Tier3;\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFee(string memory label, uint256 duration)\\n public\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax)\\n {\\n bytes4 revertReason;\\n (basePrice, tax, revertReason) = _tryGetRenewalFee(label, duration);\\n if (revertReason != bytes4(0x0)) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, revertReason)\\n revert(0x0, 0x04)\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertUSDToRON(uint256 usdWei) public view returns (uint256 ronWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).inverse({ expo: -18 }).mul({\\n inpWei: usdWei,\\n inpDecimals: int32(uint32(USD_DECIMALS)),\\n outDecimals: 18\\n });\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertRONToUSD(uint256 ronWei) public view returns (uint256 usdWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).mul({\\n inpWei: ronWei,\\n inpDecimals: 18,\\n outDecimals: int32(uint32(USD_DECIMALS))\\n });\\n }\\n\\n /**\\n * @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid.\\n */\\n function _requireBulkSetDomainPriceArgumentsValid(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) internal pure returns (uint256 length) {\\n length = lbHashes.length;\\n if (length == 0 || ronPrices.length != length || proofHashes.length != length || setTypes.length != length) {\\n revert InvalidArrayLength();\\n }\\n }\\n\\n /**\\n * @dev Helper method to set domain price.\\n *\\n * Emits an event {DomainPriceUpdated} optionally.\\n */\\n function _setDomainPrice(\\n address operator,\\n bytes32 lbHash,\\n uint256 ronPrice,\\n bytes32 proofHash,\\n uint256 setType,\\n bool forced\\n ) internal returns (bool updated) {\\n uint256 usdPrice = convertRONToUSD(ronPrice);\\n TimestampWrapper storage dp = _dp[lbHash];\\n updated = forced || dp.value < usdPrice;\\n\\n if (updated) {\\n dp.value = usdPrice;\\n dp.timestamp = block.timestamp;\\n emit DomainPriceUpdated(operator, lbHash, usdPrice, proofHash, setType);\\n }\\n }\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function _setTaxRatio(uint256 ratio) internal {\\n _taxRatio = ratio;\\n emit TaxRatioUpdated(_msgSender(), ratio);\\n }\\n\\n /**\\n * @dev Sets domain price scale rule.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n */\\n function _setDomainPriceScaleRule(PeriodScaler calldata domainPriceScaleRule) internal {\\n _dpDownScaler = domainPriceScaleRule;\\n emit DomainPriceScaleRuleUpdated(_msgSender(), domainPriceScaleRule.ratio, domainPriceScaleRule.period);\\n }\\n\\n /**\\n * @dev Sets renewal fee.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function _setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) internal {\\n address operator = _msgSender();\\n RenewalFee memory renewalFee;\\n uint256 length = renewalFees.length;\\n uint256 maxRenewalFeeLength = _rnfMaxLength;\\n\\n for (uint256 i; i < length;) {\\n renewalFee = renewalFees[i];\\n maxRenewalFeeLength = Math.max(maxRenewalFeeLength, renewalFee.labelLength);\\n _rnFee[renewalFee.labelLength] = renewalFee.fee;\\n emit RenewalFeeByLengthUpdated(operator, renewalFee.labelLength, renewalFee.fee);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n if (maxRenewalFeeLength != _rnfMaxLength) {\\n _rnfMaxLength = maxRenewalFeeLength;\\n emit MaxRenewalFeeLengthUpdated(operator, maxRenewalFeeLength);\\n }\\n }\\n\\n /**\\n * @dev Sets Pyth Oracle config.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function _setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) internal {\\n _pyth = pyth;\\n _maxAcceptableAge = maxAcceptableAge;\\n _pythIdForRONUSD = pythIdForRONUSD;\\n emit PythOracleConfigUpdated(_msgSender(), pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @dev Tries to get the renewal fee for a given domain label and duration.\\n * It returns the base price, tax, and a revert reason if applicable.\\n * @param label The domain label.\\n * @param duration The duration for which the domain is being renewed.\\n * @return basePrice The base price in USD for \\u02ddrenewing the domain.\\n * @return tax The tax amount in USD for renewing the domain.\\n * @return revertReason The revert reason if the renewal fee exceeds the auction domain expiry.\\n */\\n function _tryGetRenewalFee(string memory label, uint256 duration)\\n internal\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax, bytes4 revertReason)\\n {\\n uint256 nameLen = label.strlen();\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n\\n if (overriddenRenewalFee != 0) {\\n basePrice.usd = duration * ~overriddenRenewalFee;\\n } else {\\n uint256 renewalFeeByLength = _rnFee[Math.min(nameLen, _rnfMaxLength)];\\n basePrice.usd = duration * renewalFeeByLength;\\n uint256 id = LibRNSDomain.toId(LibRNSDomain.RON_ID, label);\\n INSAuction auction = _auction;\\n if (auction.reserved(id)) {\\n INSUnified rns = auction.getRNSUnified();\\n uint256 expiry = LibSafeRange.addWithUpperbound(rns.getRecord(id).mut.expiry, duration, type(uint64).max);\\n (INSAuction.DomainAuction memory domainAuction,) = auction.getAuction(id);\\n uint256 claimedAt = domainAuction.bid.claimedAt;\\n if (claimedAt != 0 && expiry - claimedAt > auction.MAX_AUCTION_DOMAIN_EXPIRY()) {\\n return (basePrice, tax, ExceedAuctionDomainExpiry.selector);\\n }\\n // Tax is added to the name reserved for the auction\\n tax.usd = Math.mulDiv(_taxRatio, _getDomainPrice(lbHash), MAX_PERCENTAGE);\\n }\\n }\\n\\n tax.ron = convertUSDToRON(tax.usd);\\n basePrice.ron = convertUSDToRON(basePrice.usd);\\n }\\n\\n /**\\n * @dev Returns the current domain price applied the business rule: deduced x% each y seconds.\\n */\\n function _getDomainPrice(bytes32 lbHash) internal view returns (uint256) {\\n TimestampWrapper storage dp = _dp[lbHash];\\n uint256 lastSyncedAt = dp.timestamp;\\n if (lastSyncedAt == 0) return 0;\\n\\n uint256 passedDuration = block.timestamp - lastSyncedAt;\\n return _dpDownScaler.scaleDown({ v: dp.value, maxR: MAX_PERCENTAGE, dur: passedDuration });\\n }\\n}\\n\",\"keccak256\":\"0x0edacadce2173877441244247275ea91591f0b165874ff4a384583894f346827\",\"license\":\"MIT\"},\"src/interfaces/INSAuction.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { EventRange } from \\\"../libraries/LibEventRange.sol\\\";\\n\\ninterface INSAuction {\\n error NotYetEnded();\\n error NoOneBidded();\\n error NullAssignment();\\n error AlreadyBidding(uint256 id);\\n error RatioIsTooLarge();\\n error NameNotReserved();\\n error InvalidEventRange();\\n error QueryIsNotInPeriod();\\n error InsufficientAmount();\\n error InvalidArrayLength();\\n error ContractBidderIsForbidden();\\n error EventIsNotCreatedOrAlreadyStarted();\\n\\n struct Bid {\\n address payable bidder;\\n uint256 price;\\n uint256 timestamp;\\n uint256 claimedAt;\\n }\\n\\n struct DomainAuction {\\n bytes32 auctionId;\\n uint256 startingPrice;\\n Bid bid;\\n }\\n\\n /// @dev Emitted when an auction is set.\\n event AuctionEventSet(bytes32 indexed auctionId, EventRange range);\\n /// @dev Emitted when the labels are listed for auction.\\n event LabelsListed(bytes32 indexed auctionId, uint256[] ids, uint256[] startingPrices);\\n /// @dev Emitted when a bid is placed for a name.\\n event BidPlaced(\\n bytes32 indexed auctionId,\\n uint256 indexed id,\\n uint256 price,\\n address payable bidder,\\n uint256 previousPrice,\\n address previousBidder\\n );\\n /// @dev Emitted when the treasury is updated.\\n event TreasuryUpdated(address indexed addr);\\n /// @dev Emitted when bid gap ratio is updated.\\n event BidGapRatioUpdated(uint256 ratio);\\n\\n /**\\n * @dev The maximum expiry duration\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev The maximum expiry duration of a domain after transferring to bidder.\\n */\\n function MAX_AUCTION_DOMAIN_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint256);\\n\\n /**\\n * @dev The expiry duration of a domain after transferring to bidder.\\n */\\n function DOMAIN_EXPIRY_DURATION() external pure returns (uint64);\\n\\n /**\\n * @dev Claims domain names for auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param labels The domain names. Eg, ['foo'] for 'foo.ron'\\n * @return ids The id corresponding for namehash of domain names.\\n */\\n function bulkRegister(string[] calldata labels) external returns (uint256[] memory ids);\\n\\n /**\\n * @dev Checks whether a domain name is currently reserved for auction or not.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function reserved(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Claim unbidded names and transfer them to the specified addresses.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param tos The array of addresses to transfer domain names to.\\n * @param ids The id corresponding for namehash of domain names.\\n * @param allowFailure Flag to indicate whether to allow failure if a domain is already being bid on.\\n * @return claimeds An array indicating whether each domain name was successfully claimed.\\n */\\n function bulkClaimUnbiddedNames(address[] calldata tos, uint256[] calldata ids, bool allowFailure)\\n external\\n returns (bool[] memory claimeds);\\n\\n /**\\n * @dev Creates a new auction to sale with a specific time period.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n *\\n * @return auctionId The auction id\\n * @notice Please use the method `setAuctionNames` to list all the reserved names.\\n */\\n function createAuctionEvent(EventRange calldata range) external returns (bytes32 auctionId);\\n\\n /**\\n * @dev Updates the auction details.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n */\\n function setAuctionEvent(bytes32 auctionId, EventRange calldata range) external;\\n\\n /**\\n * @dev Returns the event range of an auction.\\n */\\n function getAuctionEvent(bytes32 auctionId) external view returns (EventRange memory);\\n\\n /**\\n * @dev Lists reserved names to sale in a specified auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n * - Array length are matched and larger than 0.\\n * - Only allow to set when the domain is:\\n * + Not in any auction.\\n * + Or, in the current auction.\\n * + Or, this name is not bided.\\n *\\n * Emits an event {LabelsListed}.\\n *\\n * Note: If the name is already listed, this method replaces with a new input value.\\n *\\n * @param ids The namehashes id of domain names. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function listNamesForAuction(bytes32 auctionId, uint256[] calldata ids, uint256[] calldata startingPrices) external;\\n\\n /**\\n * @dev Places a bid for a domain name.\\n *\\n * Requirements:\\n * - The name is listed, or the auction is happening.\\n * - The msg.value is larger than the current bid price or the auction starting price.\\n *\\n * Emits an event {BidPlaced}.\\n *\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function placeBid(uint256 id) external payable;\\n\\n /**\\n * @dev Returns the highest bid and address of the bidder.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function getAuction(uint256 id) external view returns (DomainAuction memory, uint256 beatPrice);\\n\\n /**\\n * @dev Bulk claims the bid name.\\n *\\n * Requirements:\\n * - Must be called after ended time.\\n * - The method caller can be anyone.\\n *\\n * @param ids The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function bulkClaimBidNames(uint256[] calldata ids) external returns (uint256[] memory claimedAts);\\n\\n /**\\n * @dev Returns the treasury.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Returns the gap ratio between 2 bids with the starting price. Value in range [0;100_00] is 0%-100%.\\n */\\n function getBidGapRatio() external view returns (uint256);\\n\\n /**\\n * @dev Sets the treasury.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {TreasuryUpdated}.\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Sets commission ratio. Value in range [0;100_00] is 0%-100%.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {BidGapRatioUpdated}.\\n */\\n function setBidGapRatio(uint256) external;\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n}\\n\",\"keccak256\":\"0x406d5d682af4652b6c9c26948a4d4e31b6b88c056177973bb5f7d32141ae658c\",\"license\":\"MIT\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error TierIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n /// @dev The tier of a domain.\\n enum Tier {\\n Unknown,\\n Tier1,\\n Tier2,\\n Tier3\\n }\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n /// @dev Emitted when the tier of a domain is overridden.\\n event TierOverridingUpdated(address indexed operator, bytes32 indexed labelHash, Tier indexed tier);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the tier of a label.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @return tier The tier of the label.\\n */\\n function getTier(string calldata label) external view returns (Tier tier);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Returns the tier of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain tier overriding. Consider using method {getTier} instead\\n * for full handling of tiers.\\n */\\n function getOverriddenTier(string memory label) external view returns (Tier tier);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk override tiers.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {TierOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param tiers Array of tiers. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0x8788fdbb62a27ad604ade2ca281a1b76001b929245d4ef9117544636ac8ec545\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/libraries/LibEventRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct EventRange {\\n uint256 startedAt;\\n uint256 endedAt;\\n}\\n\\nlibrary LibEventRange {\\n /**\\n * @dev Checks whether the event range is valid.\\n */\\n function valid(EventRange calldata range) internal pure returns (bool) {\\n return range.startedAt <= range.endedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is not yet started.\\n */\\n function isNotYetStarted(EventRange memory range) internal view returns (bool) {\\n return block.timestamp < range.startedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is ended or not.\\n */\\n function isEnded(EventRange memory range) internal view returns (bool) {\\n return range.endedAt <= block.timestamp;\\n }\\n\\n /**\\n * @dev Returns whether the current block is in period.\\n */\\n function isInPeriod(EventRange memory range) internal view returns (bool) {\\n return range.startedAt <= block.timestamp && block.timestamp < range.endedAt;\\n }\\n}\\n\",\"keccak256\":\"0x95bf015c4245919cbcbcd810dd597fdb23eb4e58b62df8ef74b1c8c60a969bea\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/TimestampWrapperUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct TimestampWrapper {\\n uint256 value;\\n uint256 timestamp;\\n}\\n\",\"keccak256\":\"0x18488d153ebc8579907a85cb7e0be828d0de7c571c9f3368a6d200574b012018\",\"license\":\"MIT\"},\"src/libraries/math/LibSafeRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibSafeRange {\\n function add(uint256 a, uint256 b) internal pure returns (uint256 c) {\\n unchecked {\\n c = a + b;\\n if (c < a) return type(uint256).max;\\n }\\n }\\n\\n /**\\n * @dev Returns value of a + b; in case result is larger than upperbound, upperbound is returned.\\n */\\n function addWithUpperbound(uint256 a, uint256 b, uint256 ceil) internal pure returns (uint256 c) {\\n if (a > ceil || b > ceil) return ceil;\\n c = add(a, b);\\n if (c > ceil) return ceil;\\n }\\n}\\n\",\"keccak256\":\"0x12cf5f592a2d80b9c1b0ea11b8fe2b3ed42fc6d62303ba667edc56464baa8810\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/pyth/PythConverter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PythStructs } from \\\"@pythnetwork/PythStructs.sol\\\";\\nimport { PowMath } from \\\"../math/PowMath.sol\\\";\\n\\nlibrary PythConverter {\\n error ErrExponentTooLarge(int32 expo);\\n error ErrComputedPriceTooLarge(int32 expo1, int32 expo2, int64 price1);\\n\\n /**\\n * @dev Multiples and converts the price into token wei with decimals `outDecimals`.\\n */\\n function mul(PythStructs.Price memory self, uint256 inpWei, int32 inpDecimals, int32 outDecimals)\\n internal\\n pure\\n returns (uint256 outWei)\\n {\\n return Math.mulDiv(\\n inpWei, PowMath.exp10(uint256(int256(self.price)), outDecimals + self.expo), PowMath.exp10(1, inpDecimals)\\n );\\n }\\n\\n /**\\n * @dev Inverses token price of tokenA/tokenB to tokenB/tokenA.\\n */\\n function inverse(PythStructs.Price memory self, int32 expo) internal pure returns (PythStructs.Price memory outPrice) {\\n uint256 exp10p1 = PowMath.exp10(1, -self.expo);\\n if (exp10p1 > uint256(type(int256).max)) revert ErrExponentTooLarge(self.expo);\\n uint256 exp10p2 = PowMath.exp10(1, -expo);\\n if (exp10p2 > uint256(type(int256).max)) revert ErrExponentTooLarge(expo);\\n int256 price = (int256(exp10p1) * int256(exp10p2)) / self.price;\\n if (price > type(int64).max) revert ErrComputedPriceTooLarge(self.expo, expo, self.price);\\n\\n return PythStructs.Price({ price: int64(price), conf: self.conf, expo: expo, publishTime: self.publishTime });\\n }\\n}\\n\",\"keccak256\":\"0x87ade16f6e931f6a3ead7706b0e550ee2c2cdee0be2f218488df93588e787f06\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", + "nonce": 8, + "numDeployments": 2, "storageLayout": { "storage": [ { - "astId": 50086, + "astId": 101362, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_initialized", "offset": 0, @@ -15818,7 +18942,7 @@ "type": "t_uint8" }, { - "astId": 50089, + "astId": 101365, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_initializing", "offset": 1, @@ -15826,23 +18950,23 @@ "type": "t_bool" }, { - "astId": 48559, + "astId": 99835, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_roles", "offset": 0, "slot": "1", - "type": "t_mapping(t_bytes32,t_struct(RoleData)48554_storage)" + "type": "t_mapping(t_bytes32,t_struct(RoleData)99830_storage)" }, { - "astId": 48869, + "astId": 100145, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_roleMembers", "offset": 0, "slot": "2", - "type": "t_mapping(t_bytes32,t_struct(AddressSet)54438_storage)" + "type": "t_mapping(t_bytes32,t_struct(AddressSet)105714_storage)" }, { - "astId": 61652, + "astId": 118300, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "____gap", "offset": 0, @@ -15850,23 +18974,23 @@ "type": "t_array(t_uint256)50_storage" }, { - "astId": 61656, + "astId": 118304, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_pyth", "offset": 0, "slot": "53", - "type": "t_contract(IPyth)54844" + "type": "t_contract(IPyth)106120" }, { - "astId": 61660, + "astId": 118308, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_auction", "offset": 0, "slot": "54", - "type": "t_contract(INSAuction)66400" + "type": "t_contract(INSAuction)123292" }, { - "astId": 61663, + "astId": 118311, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_taxRatio", "offset": 0, @@ -15874,7 +18998,7 @@ "type": "t_uint256" }, { - "astId": 61666, + "astId": 118314, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_rnfMaxLength", "offset": 0, @@ -15882,7 +19006,7 @@ "type": "t_uint256" }, { - "astId": 61669, + "astId": 118317, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_maxAcceptableAge", "offset": 0, @@ -15890,7 +19014,7 @@ "type": "t_uint256" }, { - "astId": 61672, + "astId": 118320, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_pythIdForRONUSD", "offset": 0, @@ -15898,15 +19022,15 @@ "type": "t_bytes32" }, { - "astId": 61676, + "astId": 118324, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_dpDownScaler", "offset": 0, "slot": "59", - "type": "t_struct(PeriodScaler)68668_storage" + "type": "t_struct(PeriodScaler)125607_storage" }, { - "astId": 61681, + "astId": 118329, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_rnFee", "offset": 0, @@ -15914,20 +19038,28 @@ "type": "t_mapping(t_uint256,t_uint256)" }, { - "astId": 61687, + "astId": 118335, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_dp", "offset": 0, "slot": "61", - "type": "t_mapping(t_bytes32,t_struct(TimestampWrapper)68591_storage)" + "type": "t_mapping(t_bytes32,t_struct(TimestampWrapper)125530_storage)" }, { - "astId": 61692, + "astId": 118340, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_rnFeeOverriding", "offset": 0, "slot": "62", "type": "t_mapping(t_bytes32,t_uint256)" + }, + { + "astId": 118345, + "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", + "label": "_tierOverriding", + "offset": 0, + "slot": "63", + "type": "t_mapping(t_bytes32,t_uint8)" } ], "types": { @@ -15958,12 +19090,12 @@ "label": "bytes32", "numberOfBytes": "32" }, - "t_contract(INSAuction)66400": { + "t_contract(INSAuction)123292": { "encoding": "inplace", "label": "contract INSAuction", "numberOfBytes": "20" }, - "t_contract(IPyth)54844": { + "t_contract(IPyth)106120": { "encoding": "inplace", "label": "contract IPyth", "numberOfBytes": "20" @@ -15975,26 +19107,26 @@ "numberOfBytes": "32", "value": "t_bool" }, - "t_mapping(t_bytes32,t_struct(AddressSet)54438_storage)": { + "t_mapping(t_bytes32,t_struct(AddressSet)105714_storage)": { "encoding": "mapping", "key": "t_bytes32", "label": "mapping(bytes32 => struct EnumerableSet.AddressSet)", "numberOfBytes": "32", - "value": "t_struct(AddressSet)54438_storage" + "value": "t_struct(AddressSet)105714_storage" }, - "t_mapping(t_bytes32,t_struct(RoleData)48554_storage)": { + "t_mapping(t_bytes32,t_struct(RoleData)99830_storage)": { "encoding": "mapping", "key": "t_bytes32", "label": "mapping(bytes32 => struct AccessControl.RoleData)", "numberOfBytes": "32", - "value": "t_struct(RoleData)48554_storage" + "value": "t_struct(RoleData)99830_storage" }, - "t_mapping(t_bytes32,t_struct(TimestampWrapper)68591_storage)": { + "t_mapping(t_bytes32,t_struct(TimestampWrapper)125530_storage)": { "encoding": "mapping", "key": "t_bytes32", "label": "mapping(bytes32 => struct TimestampWrapper)", "numberOfBytes": "32", - "value": "t_struct(TimestampWrapper)68591_storage" + "value": "t_struct(TimestampWrapper)125530_storage" }, "t_mapping(t_bytes32,t_uint256)": { "encoding": "mapping", @@ -16003,6 +19135,13 @@ "numberOfBytes": "32", "value": "t_uint256" }, + "t_mapping(t_bytes32,t_uint8)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint8)", + "numberOfBytes": "32", + "value": "t_uint8" + }, "t_mapping(t_uint256,t_uint256)": { "encoding": "mapping", "key": "t_uint256", @@ -16010,28 +19149,28 @@ "numberOfBytes": "32", "value": "t_uint256" }, - "t_struct(AddressSet)54438_storage": { + "t_struct(AddressSet)105714_storage": { "encoding": "inplace", "label": "struct EnumerableSet.AddressSet", "numberOfBytes": "64", "members": [ { - "astId": 54437, + "astId": 105713, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_inner", "offset": 0, "slot": "0", - "type": "t_struct(Set)54123_storage" + "type": "t_struct(Set)105399_storage" } ] }, - "t_struct(PeriodScaler)68668_storage": { + "t_struct(PeriodScaler)125607_storage": { "encoding": "inplace", "label": "struct PeriodScaler", "numberOfBytes": "32", "members": [ { - "astId": 68665, + "astId": 125604, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "ratio", "offset": 0, @@ -16039,7 +19178,7 @@ "type": "t_uint192" }, { - "astId": 68667, + "astId": 125606, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "period", "offset": 24, @@ -16048,13 +19187,13 @@ } ] }, - "t_struct(RoleData)48554_storage": { + "t_struct(RoleData)99830_storage": { "encoding": "inplace", "label": "struct AccessControl.RoleData", "numberOfBytes": "64", "members": [ { - "astId": 48551, + "astId": 99827, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "members", "offset": 0, @@ -16062,7 +19201,7 @@ "type": "t_mapping(t_address,t_bool)" }, { - "astId": 48553, + "astId": 99829, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "adminRole", "offset": 0, @@ -16071,13 +19210,13 @@ } ] }, - "t_struct(Set)54123_storage": { + "t_struct(Set)105399_storage": { "encoding": "inplace", "label": "struct EnumerableSet.Set", "numberOfBytes": "64", "members": [ { - "astId": 54118, + "astId": 105394, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_values", "offset": 0, @@ -16085,7 +19224,7 @@ "type": "t_array(t_bytes32)dyn_storage" }, { - "astId": 54122, + "astId": 105398, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_indexes", "offset": 0, @@ -16094,13 +19233,13 @@ } ] }, - "t_struct(TimestampWrapper)68591_storage": { + "t_struct(TimestampWrapper)125530_storage": { "encoding": "inplace", "label": "struct TimestampWrapper", "numberOfBytes": "64", "members": [ { - "astId": 68588, + "astId": 125527, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "value", "offset": 0, @@ -16108,7 +19247,7 @@ "type": "t_uint256" }, { - "astId": 68590, + "astId": 125529, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "timestamp", "offset": 0, @@ -16139,7 +19278,7 @@ } } }, - "timestamp": 1699254558, + "timestamp": 1710239241, "userdoc": { "version": 1, "kind": "user", @@ -16147,6 +19286,9 @@ "getOverriddenRenewalFee(string)": { "notice": "This method is to help developers check the domain renewal fee overriding. Consider using method {getRenewalFee} instead for full handling of renewal fees." }, + "getOverriddenTier(string)": { + "notice": "This method is to help developers check the domain tier overriding. Consider using method {getTier} instead for full handling of tiers." + }, "setScaleDownRuleForDomainPrice((uint192,uint64))": { "notice": "Applies for the business rule: -x% each y seconds." }