@ubk-labs/ubk-oracle 0.1.2 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/c04fe46bfd9dbe62256a68be548afa14.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
- "contractName": "Constants",
4
- "sourceName": "contracts/constants/Constants.sol",
3
+ "contractName": "UBKOracleConstants",
4
+ "sourceName": "contracts/constants/UBKOracleConstants.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [],
@@ -134,8 +134,8 @@
134
134
  "type": "function"
135
135
  }
136
136
  ],
137
- "bytecode": "0x61016861003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100a85760003560e01c8063730513511161007057806373051351146101015780639a1b2c43146100ad578063afb9888514610112578063d160ed4d14610121578063f3f7de781461012957600080fd5b80634e9331ef146100ad5780635c94d0f9146100c85780636a146024146100d75780636bae86bb146100e65780636c0d5b36146100f2575b600080fd5b6100b6610e1081565b60405190815260200160405180910390f35b6100b667016345785d8a000081565b6100b6670de0b6b3a764000081565b6100b66402540be40081565b6100b66729a2241af62c000081565b6100b669d3c21bcecceda100000081565b6100b66702c68af0bb14000081565b6100b6600581565b6100b6612a308156fea2646970667358221220d6f647b3c28297edebdcc6db110e61679c0f7edfa1fac62ab3ee1dd2d29c106c64736f6c63430008150033",
138
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100a85760003560e01c8063730513511161007057806373051351146101015780639a1b2c43146100ad578063afb9888514610112578063d160ed4d14610121578063f3f7de781461012957600080fd5b80634e9331ef146100ad5780635c94d0f9146100c85780636a146024146100d75780636bae86bb146100e65780636c0d5b36146100f2575b600080fd5b6100b6610e1081565b60405190815260200160405180910390f35b6100b667016345785d8a000081565b6100b6670de0b6b3a764000081565b6100b66402540be40081565b6100b66729a2241af62c000081565b6100b669d3c21bcecceda100000081565b6100b66702c68af0bb14000081565b6100b6600581565b6100b6612a308156fea2646970667358221220d6f647b3c28297edebdcc6db110e61679c0f7edfa1fac62ab3ee1dd2d29c106c64736f6c63430008150033",
137
+ "bytecode": "0x61016861003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100a85760003560e01c8063730513511161007057806373051351146101015780639a1b2c43146100ad578063afb9888514610112578063d160ed4d14610121578063f3f7de781461012957600080fd5b80634e9331ef146100ad5780635c94d0f9146100c85780636a146024146100d75780636bae86bb146100e65780636c0d5b36146100f2575b600080fd5b6100b6610e1081565b60405190815260200160405180910390f35b6100b667016345785d8a000081565b6100b6670de0b6b3a764000081565b6100b66402540be40081565b6100b66729a2241af62c000081565b6100b669d3c21bcecceda100000081565b6100b66702c68af0bb14000081565b6100b6600581565b6100b6612a308156fea2646970667358221220a0861901c16baa83a56628bb8b95ec1e373e3060f03d44a4084cb5c2271c79ef64736f6c63430008150033",
138
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100a85760003560e01c8063730513511161007057806373051351146101015780639a1b2c43146100ad578063afb9888514610112578063d160ed4d14610121578063f3f7de781461012957600080fd5b80634e9331ef146100ad5780635c94d0f9146100c85780636a146024146100d75780636bae86bb146100e65780636c0d5b36146100f2575b600080fd5b6100b6610e1081565b60405190815260200160405180910390f35b6100b667016345785d8a000081565b6100b6670de0b6b3a764000081565b6100b66402540be40081565b6100b66729a2241af62c000081565b6100b669d3c21bcecceda100000081565b6100b66702c68af0bb14000081565b6100b6600581565b6100b6612a308156fea2646970667358221220a0861901c16baa83a56628bb8b95ec1e373e3060f03d44a4084cb5c2271c79ef64736f6c63430008150033",
139
139
  "linkReferences": {},
140
140
  "deployedLinkReferences": {}
141
141
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/59a7a86e788a7471c2e99b922236c2bf.json"
3
+ "buildInfo": "../../../build-info/c04fe46bfd9dbe62256a68be548afa14.json"
4
4
  }
@@ -1021,8 +1021,8 @@
1021
1021
  "type": "function"
1022
1022
  }
1023
1023
  ],
1024
- "bytecode": "0x6080604052610e10600755610e1060026200001b919062000158565b6008556009805460ff191690553480156200003557600080fd5b506040516200251c3803806200251c833981016040819052620000589162000184565b806001600160a01b0381166200008957604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000948162000108565b506001600160a01b0381166200010157604080516374b58fcf60e01b81526004810191909152601260448201527127b930b1b6329d31b7b739ba393ab1ba37b960711b606482015260806024820152600560848201526437bbb732b960d91b60a482015260c40162000080565b50620001b6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80820281158282048414176200017e57634e487b7160e01b600052601160045260246000fd5b92915050565b6000602082840312156200019757600080fd5b81516001600160a01b0381168114620001af57600080fd5b9392505050565b61235680620001c66000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638fef24a311610104578063cfa3d593116100a2578063e8c1650011610071578063e8c1650014610461578063ed06a12d1461048a578063f04c98ca1461049d578063f2fde38b146104bd57600080fd5b8063cfa3d593146103e9578063d3c7c2c7146103fc578063d979303314610411578063e310bd2a1461043a57600080fd5b8063a95121b5116100de578063a95121b51461039d578063c6255626146103b0578063cd4f4a9c146103c3578063ced663b0146103d657600080fd5b80638fef24a31461036e578063a5b36a3614610381578063a6f4ab2e1461038a57600080fd5b806348c87c511161017c57806371e8023c1161014b57806371e8023c146102e75780637f33780a146102fa57806387ef186a146103365780638da5cb5b1461034957600080fd5b806348c87c51146102965780634f129c53146102a957806369ef32d2146102cc578063715018a6146102df57600080fd5b8063295a5212116101b8578063295a5212146102415780633b82fdeb1461025b57806341976e09146102705780634316b5a21461028357600080fd5b80630af1a39f146101df5780630f5d559d14610207578063260f9a8b1461022a575b600080fd5b6101f26101ed366004611d10565b6104d0565b60405190151581526020015b60405180910390f35b6101f2610215366004611d10565b60046020526000908152604090205460ff1681565b61023360085481565b6040519081526020016101fe565b60095461024e9060ff1681565b6040516101fe9190611d65565b61026e610269366004611d73565b610527565b005b61023361027e366004611d10565b610593565b61026e610291366004611d94565b6105a4565b6102336102a4366004611d10565b610613565b6101f26102b7366004611d10565b600c6020526000908152604090205460ff1681565b61026e6102da366004611dad565b610664565b61026e6108cd565b61026e6102f5366004611dad565b6108e1565b610321610308366004611d10565b6005602052600090815260409020805460019091015482565b604080519283526020830191909152016101fe565b610233610344366004611de6565b610a22565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101fe565b61026e61037c366004611e12565b610afa565b61023360075481565b61026e610398366004611d94565b610c45565b61026e6103ab366004611de6565b610cb4565b6103566103be366004611d94565b610f7b565b6102336103d1366004611de6565b610fa5565b61026e6103e4366004611d10565b611068565b6102336103f7366004611d10565b6110ec565b6104046112cc565b6040516101fe9190611e47565b61035661041f366004611d10565b6002602052600090815260409020546001600160a01b031681565b610321610448366004611d10565b6006602052600090815260409020805460019091015482565b61035661046f366004611d10565b6001602052600090815260409020546001600160a01b031681565b610233610498366004611d10565b61132e565b6102336104ab366004611d10565b60036020526000908152604090205481565b61026e6104cb366004611d10565b6113a4565b6001600160a01b03811660009081526005602090815260408083208151808301909252805482526001015491810182905290158015906105205750600754602082015161051d9042611eaa565b11155b9392505050565b61052f6113e2565b6009805460ff811691839160ff19166001838181111561055157610551611d2d565b02179055507fa6972b82c1819c55fbb1eb3a5226aab6498a55b1cccd85bcffc44175751eb5738183604051610587929190611ebd565b60405180910390a15050565b600061059e8261140f565b92915050565b6105ac6113e2565b6007548110156105d7576040516301ee48e160e71b8152600481018290526024015b60405180910390fd5b60088190556040518181527fedd414ac063290211a282c8be3e328fcc6d60e4d1422ab34bc5af9a01736943d906020015b60405180910390a150565b6001600160a01b038116600090815260056020908152604080832081518083019092528054825260010154918101829052908203610655575060001992915050565b60208101516105209042611eaa565b61066c6113e2565b6001600160a01b038216158061068957506001600160a01b038116155b156106a7576040516374b58fcf60e01b81526004016105ce90611ed8565b806001600160a01b03163b6000036106dd5760405163c2b3d6a360e01b81526001600160a01b03821660048201526024016105ce565b60008190506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190611f31565b905060128160ff1611156107815760405163bed0220560e01b81526001600160a01b038416600482015260ff821660248201526044016105ce565b816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156107db575060408051601f3d908101601f191682019092526107d891810190611f6e565b60015b6108035760405163c2b3d6a360e01b81526001600160a01b03841660048201526024016105ce565b600084131580610811575081155b1561083a5760405163c2b3d6a360e01b81526001600160a01b03891660048201526024016105ce565b505050506001600160a01b03858116600090815260016020908152604080832080546001600160a01b031916948916949094179093556004905220805460ff191690555061088784611541565b826001600160a01b0316846001600160a01b03167fb9b75140a682094a10720170347bc8e03bfd71f1bb59d103cd8dc0782c52568360405160405180910390a350505050565b6108d56113e2565b6108df60006115f0565b565b6108e96113e2565b6001600160a01b038216158061090657506001600160a01b038116155b15610924576040516374b58fcf60e01b81526004016105ce90611fbe565b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561097e575060408051601f3d908101601f1916820190925261097b91810190612010565b60015b6109a65760405163352e446560e11b81526001600160a01b03831660048201526024016105ce565b506001600160a01b03828116600090815260026020526040902080546001600160a01b0319169183169190911790556109de82611541565b806001600160a01b0316826001600160a01b03167f456db9889a9cf62250a0d96274761be08bc928b1ea97a2b6e45d9db8b575fa0c60405160405180910390a35050565b600081600003610a345750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190611f31565b90506000610aa58561140f565b9050600081610abc670de0b6b3a76400008761202d565b610ac6919061205a565b9050670de0b6b3a7640000610adc84600a612160565b610ae6908361202d565b610af0919061205a565b9695505050505050565b610b026113e2565b6001600160a01b038316610b7757604080516374b58fcf60e01b81526004810191909152601960448201527f4f7261636c653a7365745661756c7452617465426f756e64730000000000000060648201526080602482015260056084820152641d985d5b1d60da1b60a482015260c4016105ce565b811580610b845750818111155b80610b97575068056bc75e2d6310000081115b15610bce5760405163dceed17360e01b81526001600160a01b038416600482015260248101839052604481018290526064016105ce565b60408051808201825283815260208082018481526001600160a01b038716600081815260068452859020935184559051600190930192909255825185815290810184905290917f97b96731e654217eb1034ea218d533d1b086cd0ba6ba8b09735ef3e70c4d5fd491015b60405180910390a2505050565b610c4d6113e2565b610e10811080610c5e5750612a3081115b15610c7f576040516301ee48e160e71b8152600481018290526024016105ce565b60078190556040518181527f8e163815dacf2204ab589790672a86e421041804acc4cb85a7caebac33be1b2b90602001610608565b610cbc6113e2565b600160095460ff166001811115610cd557610cd5611d2d565b03610cfb576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216610d22576040516374b58fcf60e01b81526004016105ce90612187565b6402540be400811080610d3e575069d3c21bcecceda100000081115b15610d6e57604051638366d84d60e01b81526001600160a01b0383166004820152602481018290526044016105ce565b6001600160a01b038216600090815260056020908152604091829020825180840190935280548084526001909101549183019190915215801590610dc257506007546020820151610dbf9042611eaa565b11155b15610e71576000670de0b6b3a7640000610de467016345785d8a000082611eaa565b8351610df0919061202d565b610dfa919061205a565b90506000670de0b6b3a7640000610e1967016345785d8a0000826121c5565b8451610e25919061202d565b610e2f919061205a565b905081841080610e3e57508084115b15610e6e57604051638366d84d60e01b81526001600160a01b0386166004820152602481018590526044016105ce565b50505b6001600160a01b038316600081815260036020908152604080832086905560048252808320805460ff191660019081179091558151808301835287815242818501908152868652600585529483902090518155935193019290925590518481527f469ff3a7ada7a8c122e2729e7041dfdabfc5e8b26802fa04d7f00706149c4e24910160405180910390a2604051600181526001600160a01b038416907f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a89060200160405180910390a2604080518381524260208201526001600160a01b038516917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c9101610c38565b600b8181548110610f8b57600080fd5b6000918252602090912001546001600160a01b0316905081565b600081600003610fb75750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190611f31565b9050600061102a82600a612160565b61103c670de0b6b3a76400008661202d565b611046919061205a565b905060006110538661140f565b9050670de0b6b3a7640000610ae6828461202d565b6110706113e2565b6001600160a01b038116611097576040516374b58fcf60e01b81526004016105ce906121d8565b6001600160a01b0381166000818152600460209081526040808320805460ff19169055519182527f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a8910160405180910390a250565b6001600160a01b03811660009081526004602052604081205460ff161561112957506001600160a01b031660009081526003602052604090205490565b6001600160a01b03808316600090815260026020526040902054168015611154576105208382611640565b6001600160a01b03808416600090815260016020526040902054168061119857604051632a4f499d60e21b81526001600160a01b03851660048201526024016105ce565b6000806111a483611989565b9150915080156111b75750949350505050565b6001600160a01b03861660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361121657604051635a94181960e01b81526001600160a01b03881660048201526024016105ce565b60085460208201516112289042611eaa565b111561125257604051634ebf1f0f60e11b81526001600160a01b03881660048201526024016105ce565b805160408051918252426020830152606090820181905260119082015270436861696e6c696e6b206661696c75726560781b60808201526001600160a01b038816907f1037657730ddbc445dbaba678e03c33d31f7ae7f523c4f5de5f458ea5b837d399060a00160405180910390a2519695505050505050565b6060600b80548060200260200160405190810160405280929190818152602001828054801561132457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611306575b5050505050905090565b6000600160095460ff16600181111561134957611349611d2d565b0361136f576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216611396576040516374b58fcf60e01b81526004016105ce9061221e565b61059e82611b45565b919050565b6113ac6113e2565b6001600160a01b0381166113d657604051631e4fbdf760e01b8152600060048201526024016105ce565b6113df816115f0565b50565b6000546001600160a01b031633146108df5760405163118cdaa760e01b81523360048201526024016105ce565b60006001600160a01b038216611438576040516374b58fcf60e01b81526004016105ce90612264565b6001600160a01b03821660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361149757604051635a94181960e01b81526001600160a01b03841660048201526024016105ce565b604051630af1a39f60e01b81526001600160a01b03841660048201523090630af1a39f90602401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff919061229c565b61153a5760208101516040516348da37e960e11b81526001600160a01b038516600482015260248101919091524260448201526064016105ce565b5192915050565b6001600160a01b0381166000908152600c602052604090205460ff166113df57600b805460018082019092557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0384169081179091556000818152600c6020526040808220805460ff1916909417909355915190917f8f50fda9bf5d3b403c53b7e91646abd507f8cebf2577655d55d7de3926168b1791a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006005600a541061166857604051630e5daffd60e11b8152600060048201526024016105ce565b600a8054906000611678836122be565b91905055506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e19190611f31565b90506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611723573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117479190611f31565b9050600061175683600a612160565b6040516303d1689d60e11b8152600481018290529091506000906001600160a01b038816906307a2d13a90602401602060405180830381865afa1580156117a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c591906122d7565b90508015806117e257506ec097ce7bc90715b34b9f100000000081115b1561181157604051624df74960e31b81526001600160a01b0388166004820152602481018290526044016105ce565b600061181e84600a612160565b611830670de0b6b3a76400008461202d565b61183a919061205a565b9050600061184986600a612160565b61185b670de0b6b3a76400008661202d565b611865919061205a565b905060008161187c670de0b6b3a76400008561202d565b611886919061205a565b6001600160a01b038b1660009081526006602090815260408083208151808301909252805480835260019091015492820192909252929350156118ca5781516118d4565b6702c68af0bb1400005b9050600082602001516000146118ee5782602001516118f8565b6729a2241af62c00005b90508084118061190757508184105b156119375760405163c55e83d360e01b81526001600160a01b038e166004820152602481018590526044016105ce565b60006119428d6110ec565b9050670de0b6b3a7640000611957868361202d565b611961919061205a565b9b505050505050505050505050600a805490600061197e836122f0565b919050555092915050565b600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156119e6575060408051601f3d908101601f191682019092526119e391810190611f6e565b60015b6119f557506000928392509050565b600084131580611a03575081155b80611a185750600754611a168342611eaa565b115b15611a2d575060009788975095505050505050565b6000886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190611f31565b905084600060ff8316601203611aa8575080611b00565b60128360ff161015611adc57611ad582611ac3856012612307565b611ace90600a612160565b6001611c16565b9050611b00565b611afd826001611aed601287612307565b611af890600a612160565b611c16565b90505b6402540be400811080611b1c575069d3c21bcecceda100000081115b15611b34575060009a8b9a5098505050505050505050565b9a60019a5098505050505050505050565b6000611b50826110ec565b90506402540be400811080611b6e575069d3c21bcecceda100000081115b15611b9e57604051631b27609360e01b81526001600160a01b0383166004820152600060248201526044016105ce565b6040805180820182528281524260208083018281526001600160a01b03871660008181526005845286902094518555905160019094019390935583518581529081019190915290917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c910160405180910390a2919050565b6000806000611c258686611ccb565b9150915081600003611c4a57838181611c4057611c40612044565b0492505050610520565b818411611c6157611c616003851502601118611ce9565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b60008060001983850993909202808410938190039390930393915050565b634e487b71600052806020526024601cfd5b6001600160a01b03811681146113df57600080fd5b600060208284031215611d2257600080fd5b813561052081611cfb565b634e487b7160e01b600052602160045260246000fd5b60028110611d6157634e487b7160e01b600052602160045260246000fd5b9052565b6020810161059e8284611d43565b600060208284031215611d8557600080fd5b81356002811061052057600080fd5b600060208284031215611da657600080fd5b5035919050565b60008060408385031215611dc057600080fd5b8235611dcb81611cfb565b91506020830135611ddb81611cfb565b809150509250929050565b60008060408385031215611df957600080fd5b8235611e0481611cfb565b946020939093013593505050565b600080600060608486031215611e2757600080fd5b8335611e3281611cfb565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015611e885783516001600160a01b031683529284019291840191600101611e63565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561059e5761059e611e94565b60408101611ecb8285611d43565b6105206020830184611d43565b60408152601760408201527f4f7261636c653a736574436861696e6c696e6b46656564000000000000000000606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b600060208284031215611f4357600080fd5b815160ff8116811461052057600080fd5b805169ffffffffffffffffffff8116811461139f57600080fd5b600080600080600060a08688031215611f8657600080fd5b611f8f86611f54565b9450602086015193506040860151925060608601519150611fb260808701611f54565b90509295509295909350565b60408152601660408201527513dc9858db194e9cd95d115490cd0d8c8d95985d5b1d60521b606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b60006020828403121561202257600080fd5b815161052081611cfb565b808202811582820484141761059e5761059e611e94565b634e487b7160e01b600052601260045260246000fd5b60008261207757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156120b757816000190482111561209d5761209d611e94565b808516156120aa57918102915b93841c9390800290612081565b509250929050565b6000826120ce5750600161059e565b816120db5750600061059e565b81600181146120f157600281146120fb57612117565b600191505061059e565b60ff84111561210c5761210c611e94565b50506001821b61059e565b5060208310610133831016604e8410600b841016171561213a575081810a61059e565b612144838361207c565b806000190482111561215857612158611e94565b029392505050565b600061052060ff8416836120bf565b60058152643a37b5b2b760d91b602082015260400190565b6040815260156040820152744f7261636c653a7365744d616e75616c507269636560581b606082015260806020820152600061059e6080830161216f565b8082018082111561059e5761059e611e94565b60408152601960408201527f4f7261636c653a64697361626c654d616e75616c507269636500000000000000606082015260806020820152600061059e6080830161216f565b60408152601a60408201527f4f7261636c653a6665746368416e645570646174655072696365000000000000606082015260806020820152600061059e6080830161216f565b60408152600f60408201526e4f7261636c653a676574507269636560881b606082015260806020820152600061059e6080830161216f565b6000602082840312156122ae57600080fd5b8151801515811461052057600080fd5b6000600182016122d0576122d0611e94565b5060010190565b6000602082840312156122e957600080fd5b5051919050565b6000816122ff576122ff611e94565b506000190190565b60ff828116828216039081111561059e5761059e611e9456fea26469706673582212206120fb84dbbd772d65ac8937c095ed59c532241376576938c2465c6ea467bba064736f6c63430008150033",
1025
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638fef24a311610104578063cfa3d593116100a2578063e8c1650011610071578063e8c1650014610461578063ed06a12d1461048a578063f04c98ca1461049d578063f2fde38b146104bd57600080fd5b8063cfa3d593146103e9578063d3c7c2c7146103fc578063d979303314610411578063e310bd2a1461043a57600080fd5b8063a95121b5116100de578063a95121b51461039d578063c6255626146103b0578063cd4f4a9c146103c3578063ced663b0146103d657600080fd5b80638fef24a31461036e578063a5b36a3614610381578063a6f4ab2e1461038a57600080fd5b806348c87c511161017c57806371e8023c1161014b57806371e8023c146102e75780637f33780a146102fa57806387ef186a146103365780638da5cb5b1461034957600080fd5b806348c87c51146102965780634f129c53146102a957806369ef32d2146102cc578063715018a6146102df57600080fd5b8063295a5212116101b8578063295a5212146102415780633b82fdeb1461025b57806341976e09146102705780634316b5a21461028357600080fd5b80630af1a39f146101df5780630f5d559d14610207578063260f9a8b1461022a575b600080fd5b6101f26101ed366004611d10565b6104d0565b60405190151581526020015b60405180910390f35b6101f2610215366004611d10565b60046020526000908152604090205460ff1681565b61023360085481565b6040519081526020016101fe565b60095461024e9060ff1681565b6040516101fe9190611d65565b61026e610269366004611d73565b610527565b005b61023361027e366004611d10565b610593565b61026e610291366004611d94565b6105a4565b6102336102a4366004611d10565b610613565b6101f26102b7366004611d10565b600c6020526000908152604090205460ff1681565b61026e6102da366004611dad565b610664565b61026e6108cd565b61026e6102f5366004611dad565b6108e1565b610321610308366004611d10565b6005602052600090815260409020805460019091015482565b604080519283526020830191909152016101fe565b610233610344366004611de6565b610a22565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101fe565b61026e61037c366004611e12565b610afa565b61023360075481565b61026e610398366004611d94565b610c45565b61026e6103ab366004611de6565b610cb4565b6103566103be366004611d94565b610f7b565b6102336103d1366004611de6565b610fa5565b61026e6103e4366004611d10565b611068565b6102336103f7366004611d10565b6110ec565b6104046112cc565b6040516101fe9190611e47565b61035661041f366004611d10565b6002602052600090815260409020546001600160a01b031681565b610321610448366004611d10565b6006602052600090815260409020805460019091015482565b61035661046f366004611d10565b6001602052600090815260409020546001600160a01b031681565b610233610498366004611d10565b61132e565b6102336104ab366004611d10565b60036020526000908152604090205481565b61026e6104cb366004611d10565b6113a4565b6001600160a01b03811660009081526005602090815260408083208151808301909252805482526001015491810182905290158015906105205750600754602082015161051d9042611eaa565b11155b9392505050565b61052f6113e2565b6009805460ff811691839160ff19166001838181111561055157610551611d2d565b02179055507fa6972b82c1819c55fbb1eb3a5226aab6498a55b1cccd85bcffc44175751eb5738183604051610587929190611ebd565b60405180910390a15050565b600061059e8261140f565b92915050565b6105ac6113e2565b6007548110156105d7576040516301ee48e160e71b8152600481018290526024015b60405180910390fd5b60088190556040518181527fedd414ac063290211a282c8be3e328fcc6d60e4d1422ab34bc5af9a01736943d906020015b60405180910390a150565b6001600160a01b038116600090815260056020908152604080832081518083019092528054825260010154918101829052908203610655575060001992915050565b60208101516105209042611eaa565b61066c6113e2565b6001600160a01b038216158061068957506001600160a01b038116155b156106a7576040516374b58fcf60e01b81526004016105ce90611ed8565b806001600160a01b03163b6000036106dd5760405163c2b3d6a360e01b81526001600160a01b03821660048201526024016105ce565b60008190506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190611f31565b905060128160ff1611156107815760405163bed0220560e01b81526001600160a01b038416600482015260ff821660248201526044016105ce565b816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156107db575060408051601f3d908101601f191682019092526107d891810190611f6e565b60015b6108035760405163c2b3d6a360e01b81526001600160a01b03841660048201526024016105ce565b600084131580610811575081155b1561083a5760405163c2b3d6a360e01b81526001600160a01b03891660048201526024016105ce565b505050506001600160a01b03858116600090815260016020908152604080832080546001600160a01b031916948916949094179093556004905220805460ff191690555061088784611541565b826001600160a01b0316846001600160a01b03167fb9b75140a682094a10720170347bc8e03bfd71f1bb59d103cd8dc0782c52568360405160405180910390a350505050565b6108d56113e2565b6108df60006115f0565b565b6108e96113e2565b6001600160a01b038216158061090657506001600160a01b038116155b15610924576040516374b58fcf60e01b81526004016105ce90611fbe565b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561097e575060408051601f3d908101601f1916820190925261097b91810190612010565b60015b6109a65760405163352e446560e11b81526001600160a01b03831660048201526024016105ce565b506001600160a01b03828116600090815260026020526040902080546001600160a01b0319169183169190911790556109de82611541565b806001600160a01b0316826001600160a01b03167f456db9889a9cf62250a0d96274761be08bc928b1ea97a2b6e45d9db8b575fa0c60405160405180910390a35050565b600081600003610a345750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190611f31565b90506000610aa58561140f565b9050600081610abc670de0b6b3a76400008761202d565b610ac6919061205a565b9050670de0b6b3a7640000610adc84600a612160565b610ae6908361202d565b610af0919061205a565b9695505050505050565b610b026113e2565b6001600160a01b038316610b7757604080516374b58fcf60e01b81526004810191909152601960448201527f4f7261636c653a7365745661756c7452617465426f756e64730000000000000060648201526080602482015260056084820152641d985d5b1d60da1b60a482015260c4016105ce565b811580610b845750818111155b80610b97575068056bc75e2d6310000081115b15610bce5760405163dceed17360e01b81526001600160a01b038416600482015260248101839052604481018290526064016105ce565b60408051808201825283815260208082018481526001600160a01b038716600081815260068452859020935184559051600190930192909255825185815290810184905290917f97b96731e654217eb1034ea218d533d1b086cd0ba6ba8b09735ef3e70c4d5fd491015b60405180910390a2505050565b610c4d6113e2565b610e10811080610c5e5750612a3081115b15610c7f576040516301ee48e160e71b8152600481018290526024016105ce565b60078190556040518181527f8e163815dacf2204ab589790672a86e421041804acc4cb85a7caebac33be1b2b90602001610608565b610cbc6113e2565b600160095460ff166001811115610cd557610cd5611d2d565b03610cfb576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216610d22576040516374b58fcf60e01b81526004016105ce90612187565b6402540be400811080610d3e575069d3c21bcecceda100000081115b15610d6e57604051638366d84d60e01b81526001600160a01b0383166004820152602481018290526044016105ce565b6001600160a01b038216600090815260056020908152604091829020825180840190935280548084526001909101549183019190915215801590610dc257506007546020820151610dbf9042611eaa565b11155b15610e71576000670de0b6b3a7640000610de467016345785d8a000082611eaa565b8351610df0919061202d565b610dfa919061205a565b90506000670de0b6b3a7640000610e1967016345785d8a0000826121c5565b8451610e25919061202d565b610e2f919061205a565b905081841080610e3e57508084115b15610e6e57604051638366d84d60e01b81526001600160a01b0386166004820152602481018590526044016105ce565b50505b6001600160a01b038316600081815260036020908152604080832086905560048252808320805460ff191660019081179091558151808301835287815242818501908152868652600585529483902090518155935193019290925590518481527f469ff3a7ada7a8c122e2729e7041dfdabfc5e8b26802fa04d7f00706149c4e24910160405180910390a2604051600181526001600160a01b038416907f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a89060200160405180910390a2604080518381524260208201526001600160a01b038516917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c9101610c38565b600b8181548110610f8b57600080fd5b6000918252602090912001546001600160a01b0316905081565b600081600003610fb75750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190611f31565b9050600061102a82600a612160565b61103c670de0b6b3a76400008661202d565b611046919061205a565b905060006110538661140f565b9050670de0b6b3a7640000610ae6828461202d565b6110706113e2565b6001600160a01b038116611097576040516374b58fcf60e01b81526004016105ce906121d8565b6001600160a01b0381166000818152600460209081526040808320805460ff19169055519182527f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a8910160405180910390a250565b6001600160a01b03811660009081526004602052604081205460ff161561112957506001600160a01b031660009081526003602052604090205490565b6001600160a01b03808316600090815260026020526040902054168015611154576105208382611640565b6001600160a01b03808416600090815260016020526040902054168061119857604051632a4f499d60e21b81526001600160a01b03851660048201526024016105ce565b6000806111a483611989565b9150915080156111b75750949350505050565b6001600160a01b03861660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361121657604051635a94181960e01b81526001600160a01b03881660048201526024016105ce565b60085460208201516112289042611eaa565b111561125257604051634ebf1f0f60e11b81526001600160a01b03881660048201526024016105ce565b805160408051918252426020830152606090820181905260119082015270436861696e6c696e6b206661696c75726560781b60808201526001600160a01b038816907f1037657730ddbc445dbaba678e03c33d31f7ae7f523c4f5de5f458ea5b837d399060a00160405180910390a2519695505050505050565b6060600b80548060200260200160405190810160405280929190818152602001828054801561132457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611306575b5050505050905090565b6000600160095460ff16600181111561134957611349611d2d565b0361136f576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216611396576040516374b58fcf60e01b81526004016105ce9061221e565b61059e82611b45565b919050565b6113ac6113e2565b6001600160a01b0381166113d657604051631e4fbdf760e01b8152600060048201526024016105ce565b6113df816115f0565b50565b6000546001600160a01b031633146108df5760405163118cdaa760e01b81523360048201526024016105ce565b60006001600160a01b038216611438576040516374b58fcf60e01b81526004016105ce90612264565b6001600160a01b03821660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361149757604051635a94181960e01b81526001600160a01b03841660048201526024016105ce565b604051630af1a39f60e01b81526001600160a01b03841660048201523090630af1a39f90602401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff919061229c565b61153a5760208101516040516348da37e960e11b81526001600160a01b038516600482015260248101919091524260448201526064016105ce565b5192915050565b6001600160a01b0381166000908152600c602052604090205460ff166113df57600b805460018082019092557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0384169081179091556000818152600c6020526040808220805460ff1916909417909355915190917f8f50fda9bf5d3b403c53b7e91646abd507f8cebf2577655d55d7de3926168b1791a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006005600a541061166857604051630e5daffd60e11b8152600060048201526024016105ce565b600a8054906000611678836122be565b91905055506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e19190611f31565b90506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611723573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117479190611f31565b9050600061175683600a612160565b6040516303d1689d60e11b8152600481018290529091506000906001600160a01b038816906307a2d13a90602401602060405180830381865afa1580156117a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c591906122d7565b90508015806117e257506ec097ce7bc90715b34b9f100000000081115b1561181157604051624df74960e31b81526001600160a01b0388166004820152602481018290526044016105ce565b600061181e84600a612160565b611830670de0b6b3a76400008461202d565b61183a919061205a565b9050600061184986600a612160565b61185b670de0b6b3a76400008661202d565b611865919061205a565b905060008161187c670de0b6b3a76400008561202d565b611886919061205a565b6001600160a01b038b1660009081526006602090815260408083208151808301909252805480835260019091015492820192909252929350156118ca5781516118d4565b6702c68af0bb1400005b9050600082602001516000146118ee5782602001516118f8565b6729a2241af62c00005b90508084118061190757508184105b156119375760405163c55e83d360e01b81526001600160a01b038e166004820152602481018590526044016105ce565b60006119428d6110ec565b9050670de0b6b3a7640000611957868361202d565b611961919061205a565b9b505050505050505050505050600a805490600061197e836122f0565b919050555092915050565b600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156119e6575060408051601f3d908101601f191682019092526119e391810190611f6e565b60015b6119f557506000928392509050565b600084131580611a03575081155b80611a185750600754611a168342611eaa565b115b15611a2d575060009788975095505050505050565b6000886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190611f31565b905084600060ff8316601203611aa8575080611b00565b60128360ff161015611adc57611ad582611ac3856012612307565b611ace90600a612160565b6001611c16565b9050611b00565b611afd826001611aed601287612307565b611af890600a612160565b611c16565b90505b6402540be400811080611b1c575069d3c21bcecceda100000081115b15611b34575060009a8b9a5098505050505050505050565b9a60019a5098505050505050505050565b6000611b50826110ec565b90506402540be400811080611b6e575069d3c21bcecceda100000081115b15611b9e57604051631b27609360e01b81526001600160a01b0383166004820152600060248201526044016105ce565b6040805180820182528281524260208083018281526001600160a01b03871660008181526005845286902094518555905160019094019390935583518581529081019190915290917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c910160405180910390a2919050565b6000806000611c258686611ccb565b9150915081600003611c4a57838181611c4057611c40612044565b0492505050610520565b818411611c6157611c616003851502601118611ce9565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b60008060001983850993909202808410938190039390930393915050565b634e487b71600052806020526024601cfd5b6001600160a01b03811681146113df57600080fd5b600060208284031215611d2257600080fd5b813561052081611cfb565b634e487b7160e01b600052602160045260246000fd5b60028110611d6157634e487b7160e01b600052602160045260246000fd5b9052565b6020810161059e8284611d43565b600060208284031215611d8557600080fd5b81356002811061052057600080fd5b600060208284031215611da657600080fd5b5035919050565b60008060408385031215611dc057600080fd5b8235611dcb81611cfb565b91506020830135611ddb81611cfb565b809150509250929050565b60008060408385031215611df957600080fd5b8235611e0481611cfb565b946020939093013593505050565b600080600060608486031215611e2757600080fd5b8335611e3281611cfb565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015611e885783516001600160a01b031683529284019291840191600101611e63565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561059e5761059e611e94565b60408101611ecb8285611d43565b6105206020830184611d43565b60408152601760408201527f4f7261636c653a736574436861696e6c696e6b46656564000000000000000000606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b600060208284031215611f4357600080fd5b815160ff8116811461052057600080fd5b805169ffffffffffffffffffff8116811461139f57600080fd5b600080600080600060a08688031215611f8657600080fd5b611f8f86611f54565b9450602086015193506040860151925060608601519150611fb260808701611f54565b90509295509295909350565b60408152601660408201527513dc9858db194e9cd95d115490cd0d8c8d95985d5b1d60521b606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b60006020828403121561202257600080fd5b815161052081611cfb565b808202811582820484141761059e5761059e611e94565b634e487b7160e01b600052601260045260246000fd5b60008261207757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156120b757816000190482111561209d5761209d611e94565b808516156120aa57918102915b93841c9390800290612081565b509250929050565b6000826120ce5750600161059e565b816120db5750600061059e565b81600181146120f157600281146120fb57612117565b600191505061059e565b60ff84111561210c5761210c611e94565b50506001821b61059e565b5060208310610133831016604e8410600b841016171561213a575081810a61059e565b612144838361207c565b806000190482111561215857612158611e94565b029392505050565b600061052060ff8416836120bf565b60058152643a37b5b2b760d91b602082015260400190565b6040815260156040820152744f7261636c653a7365744d616e75616c507269636560581b606082015260806020820152600061059e6080830161216f565b8082018082111561059e5761059e611e94565b60408152601960408201527f4f7261636c653a64697361626c654d616e75616c507269636500000000000000606082015260806020820152600061059e6080830161216f565b60408152601a60408201527f4f7261636c653a6665746368416e645570646174655072696365000000000000606082015260806020820152600061059e6080830161216f565b60408152600f60408201526e4f7261636c653a676574507269636560881b606082015260806020820152600061059e6080830161216f565b6000602082840312156122ae57600080fd5b8151801515811461052057600080fd5b6000600182016122d0576122d0611e94565b5060010190565b6000602082840312156122e957600080fd5b5051919050565b6000816122ff576122ff611e94565b506000190190565b60ff828116828216039081111561059e5761059e611e9456fea26469706673582212206120fb84dbbd772d65ac8937c095ed59c532241376576938c2465c6ea467bba064736f6c63430008150033",
1024
+ "bytecode": "0x6080604052610e10600755610e1060026200001b919062000163565b6008556009805460ff191690553480156200003557600080fd5b506040516200253a3803806200253a83398101604081905262000058916200018f565b806001600160a01b0381166200008957604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000948162000113565b506001600160a01b0381166200010c57604080516374b58fcf60e01b81526004810191909152601660448201527f55424b4f7261636c653a3a636f6e7374727563746f7200000000000000000000606482015260806024820152600560848201526437bbb732b960d91b60a482015260c40162000080565b50620001c1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80820281158282048414176200018957634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620001a257600080fd5b81516001600160a01b0381168114620001ba57600080fd5b9392505050565b61236980620001d16000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638fef24a311610104578063cfa3d593116100a2578063e8c1650011610071578063e8c1650014610461578063ed06a12d1461048a578063f04c98ca1461049d578063f2fde38b146104bd57600080fd5b8063cfa3d593146103e9578063d3c7c2c7146103fc578063d979303314610411578063e310bd2a1461043a57600080fd5b8063a95121b5116100de578063a95121b51461039d578063c6255626146103b0578063cd4f4a9c146103c3578063ced663b0146103d657600080fd5b80638fef24a31461036e578063a5b36a3614610381578063a6f4ab2e1461038a57600080fd5b806348c87c511161017c57806371e8023c1161014b57806371e8023c146102e75780637f33780a146102fa57806387ef186a146103365780638da5cb5b1461034957600080fd5b806348c87c51146102965780634f129c53146102a957806369ef32d2146102cc578063715018a6146102df57600080fd5b8063295a5212116101b8578063295a5212146102415780633b82fdeb1461025b57806341976e09146102705780634316b5a21461028357600080fd5b80630af1a39f146101df5780630f5d559d14610207578063260f9a8b1461022a575b600080fd5b6101f26101ed366004611d10565b6104d0565b60405190151581526020015b60405180910390f35b6101f2610215366004611d10565b60046020526000908152604090205460ff1681565b61023360085481565b6040519081526020016101fe565b60095461024e9060ff1681565b6040516101fe9190611d65565b61026e610269366004611d73565b610527565b005b61023361027e366004611d10565b610593565b61026e610291366004611d94565b6105a4565b6102336102a4366004611d10565b610613565b6101f26102b7366004611d10565b600c6020526000908152604090205460ff1681565b61026e6102da366004611dad565b610664565b61026e6108cd565b61026e6102f5366004611dad565b6108e1565b610321610308366004611d10565b6005602052600090815260409020805460019091015482565b604080519283526020830191909152016101fe565b610233610344366004611de6565b610a22565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101fe565b61026e61037c366004611e12565b610afa565b61023360075481565b61026e610398366004611d94565b610c45565b61026e6103ab366004611de6565b610cb4565b6103566103be366004611d94565b610f7b565b6102336103d1366004611de6565b610fa5565b61026e6103e4366004611d10565b611068565b6102336103f7366004611d10565b6110ec565b6104046112cc565b6040516101fe9190611e47565b61035661041f366004611d10565b6002602052600090815260409020546001600160a01b031681565b610321610448366004611d10565b6006602052600090815260409020805460019091015482565b61035661046f366004611d10565b6001602052600090815260409020546001600160a01b031681565b610233610498366004611d10565b61132e565b6102336104ab366004611d10565b60036020526000908152604090205481565b61026e6104cb366004611d10565b6113a4565b6001600160a01b03811660009081526005602090815260408083208151808301909252805482526001015491810182905290158015906105205750600754602082015161051d9042611eaa565b11155b9392505050565b61052f6113e2565b6009805460ff811691839160ff19166001838181111561055157610551611d2d565b02179055507fa6972b82c1819c55fbb1eb3a5226aab6498a55b1cccd85bcffc44175751eb5738183604051610587929190611ebd565b60405180910390a15050565b600061059e8261140f565b92915050565b6105ac6113e2565b6007548110156105d7576040516301ee48e160e71b8152600481018290526024015b60405180910390fd5b60088190556040518181527fedd414ac063290211a282c8be3e328fcc6d60e4d1422ab34bc5af9a01736943d906020015b60405180910390a150565b6001600160a01b038116600090815260056020908152604080832081518083019092528054825260010154918101829052908203610655575060001992915050565b60208101516105209042611eaa565b61066c6113e2565b6001600160a01b038216158061068957506001600160a01b038116155b156106a7576040516374b58fcf60e01b81526004016105ce90611ed8565b806001600160a01b03163b6000036106dd5760405163c2b3d6a360e01b81526001600160a01b03821660048201526024016105ce565b60008190506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190611f31565b905060128160ff1611156107815760405163bed0220560e01b81526001600160a01b038416600482015260ff821660248201526044016105ce565b816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156107db575060408051601f3d908101601f191682019092526107d891810190611f6e565b60015b6108035760405163c2b3d6a360e01b81526001600160a01b03841660048201526024016105ce565b600084131580610811575081155b1561083a5760405163c2b3d6a360e01b81526001600160a01b03891660048201526024016105ce565b505050506001600160a01b03858116600090815260016020908152604080832080546001600160a01b031916948916949094179093556004905220805460ff191690555061088784611541565b826001600160a01b0316846001600160a01b03167fb9b75140a682094a10720170347bc8e03bfd71f1bb59d103cd8dc0782c52568360405160405180910390a350505050565b6108d56113e2565b6108df60006115f0565b565b6108e96113e2565b6001600160a01b038216158061090657506001600160a01b038116155b15610924576040516374b58fcf60e01b81526004016105ce90611fbe565b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561097e575060408051601f3d908101601f1916820190925261097b91810190612017565b60015b6109a65760405163352e446560e11b81526001600160a01b03831660048201526024016105ce565b506001600160a01b03828116600090815260026020526040902080546001600160a01b0319169183169190911790556109de82611541565b806001600160a01b0316826001600160a01b03167f456db9889a9cf62250a0d96274761be08bc928b1ea97a2b6e45d9db8b575fa0c60405160405180910390a35050565b600081600003610a345750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190611f31565b90506000610aa58561140f565b9050600081610abc670de0b6b3a764000087612034565b610ac69190612061565b9050670de0b6b3a7640000610adc84600a612167565b610ae69083612034565b610af09190612061565b9695505050505050565b610b026113e2565b6001600160a01b038316610b7757604080516374b58fcf60e01b81526004810191909152601d60448201527f55424b4f7261636c653a3a7365745661756c7452617465426f756e647300000060648201526080602482015260056084820152641d985d5b1d60da1b60a482015260c4016105ce565b811580610b845750818111155b80610b97575068056bc75e2d6310000081115b15610bce5760405163dceed17360e01b81526001600160a01b038416600482015260248101839052604481018290526064016105ce565b60408051808201825283815260208082018481526001600160a01b038716600081815260068452859020935184559051600190930192909255825185815290810184905290917f97b96731e654217eb1034ea218d533d1b086cd0ba6ba8b09735ef3e70c4d5fd491015b60405180910390a2505050565b610c4d6113e2565b610e10811080610c5e5750612a3081115b15610c7f576040516301ee48e160e71b8152600481018290526024016105ce565b60078190556040518181527f8e163815dacf2204ab589790672a86e421041804acc4cb85a7caebac33be1b2b90602001610608565b610cbc6113e2565b600160095460ff166001811115610cd557610cd5611d2d565b03610cfb576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216610d22576040516374b58fcf60e01b81526004016105ce9061218e565b6402540be400811080610d3e575069d3c21bcecceda100000081115b15610d6e57604051638366d84d60e01b81526001600160a01b0383166004820152602481018290526044016105ce565b6001600160a01b038216600090815260056020908152604091829020825180840190935280548084526001909101549183019190915215801590610dc257506007546020820151610dbf9042611eaa565b11155b15610e71576000670de0b6b3a7640000610de467016345785d8a000082611eaa565b8351610df09190612034565b610dfa9190612061565b90506000670de0b6b3a7640000610e1967016345785d8a0000826121d4565b8451610e259190612034565b610e2f9190612061565b905081841080610e3e57508084115b15610e6e57604051638366d84d60e01b81526001600160a01b0386166004820152602481018590526044016105ce565b50505b6001600160a01b038316600081815260036020908152604080832086905560048252808320805460ff191660019081179091558151808301835287815242818501908152868652600585529483902090518155935193019290925590518481527f469ff3a7ada7a8c122e2729e7041dfdabfc5e8b26802fa04d7f00706149c4e24910160405180910390a2604051600181526001600160a01b038416907f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a89060200160405180910390a2604080518381524260208201526001600160a01b038516917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c9101610c38565b600b8181548110610f8b57600080fd5b6000918252602090912001546001600160a01b0316905081565b600081600003610fb75750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190611f31565b9050600061102a82600a612167565b61103c670de0b6b3a764000086612034565b6110469190612061565b905060006110538661140f565b9050670de0b6b3a7640000610ae68284612034565b6110706113e2565b6001600160a01b038116611097576040516374b58fcf60e01b81526004016105ce906121e7565b6001600160a01b0381166000818152600460209081526040808320805460ff19169055519182527f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a8910160405180910390a250565b6001600160a01b03811660009081526004602052604081205460ff161561112957506001600160a01b031660009081526003602052604090205490565b6001600160a01b03808316600090815260026020526040902054168015611154576105208382611640565b6001600160a01b03808416600090815260016020526040902054168061119857604051632a4f499d60e21b81526001600160a01b03851660048201526024016105ce565b6000806111a483611989565b9150915080156111b75750949350505050565b6001600160a01b03861660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361121657604051635a94181960e01b81526001600160a01b03881660048201526024016105ce565b60085460208201516112289042611eaa565b111561125257604051634ebf1f0f60e11b81526001600160a01b03881660048201526024016105ce565b805160408051918252426020830152606090820181905260119082015270436861696e6c696e6b206661696c75726560781b60808201526001600160a01b038816907f1037657730ddbc445dbaba678e03c33d31f7ae7f523c4f5de5f458ea5b837d399060a00160405180910390a2519695505050505050565b6060600b80548060200260200160405190810160405280929190818152602001828054801561132457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611306575b5050505050905090565b6000600160095460ff16600181111561134957611349611d2d565b0361136f576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216611396576040516374b58fcf60e01b81526004016105ce9061222d565b61059e82611b45565b919050565b6113ac6113e2565b6001600160a01b0381166113d657604051631e4fbdf760e01b8152600060048201526024016105ce565b6113df816115f0565b50565b6000546001600160a01b031633146108df5760405163118cdaa760e01b81523360048201526024016105ce565b60006001600160a01b038216611438576040516374b58fcf60e01b81526004016105ce90612273565b6001600160a01b03821660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361149757604051635a94181960e01b81526001600160a01b03841660048201526024016105ce565b604051630af1a39f60e01b81526001600160a01b03841660048201523090630af1a39f90602401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff91906122af565b61153a5760208101516040516348da37e960e11b81526001600160a01b038516600482015260248101919091524260448201526064016105ce565b5192915050565b6001600160a01b0381166000908152600c602052604090205460ff166113df57600b805460018082019092557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0384169081179091556000818152600c6020526040808220805460ff1916909417909355915190917f8f50fda9bf5d3b403c53b7e91646abd507f8cebf2577655d55d7de3926168b1791a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006005600a541061166857604051630e5daffd60e11b8152600060048201526024016105ce565b600a8054906000611678836122d1565b91905055506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e19190611f31565b90506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611723573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117479190611f31565b9050600061175683600a612167565b6040516303d1689d60e11b8152600481018290529091506000906001600160a01b038816906307a2d13a90602401602060405180830381865afa1580156117a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c591906122ea565b90508015806117e257506ec097ce7bc90715b34b9f100000000081115b1561181157604051624df74960e31b81526001600160a01b0388166004820152602481018290526044016105ce565b600061181e84600a612167565b611830670de0b6b3a764000084612034565b61183a9190612061565b9050600061184986600a612167565b61185b670de0b6b3a764000086612034565b6118659190612061565b905060008161187c670de0b6b3a764000085612034565b6118869190612061565b6001600160a01b038b1660009081526006602090815260408083208151808301909252805480835260019091015492820192909252929350156118ca5781516118d4565b6702c68af0bb1400005b9050600082602001516000146118ee5782602001516118f8565b6729a2241af62c00005b90508084118061190757508184105b156119375760405163c55e83d360e01b81526001600160a01b038e166004820152602481018590526044016105ce565b60006119428d6110ec565b9050670de0b6b3a76400006119578683612034565b6119619190612061565b9b505050505050505050505050600a805490600061197e83612303565b919050555092915050565b600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156119e6575060408051601f3d908101601f191682019092526119e391810190611f6e565b60015b6119f557506000928392509050565b600084131580611a03575081155b80611a185750600754611a168342611eaa565b115b15611a2d575060009788975095505050505050565b6000886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190611f31565b905084600060ff8316601203611aa8575080611b00565b60128360ff161015611adc57611ad582611ac385601261231a565b611ace90600a612167565b6001611c16565b9050611b00565b611afd826001611aed60128761231a565b611af890600a612167565b611c16565b90505b6402540be400811080611b1c575069d3c21bcecceda100000081115b15611b34575060009a8b9a5098505050505050505050565b9a60019a5098505050505050505050565b6000611b50826110ec565b90506402540be400811080611b6e575069d3c21bcecceda100000081115b15611b9e57604051631b27609360e01b81526001600160a01b0383166004820152600060248201526044016105ce565b6040805180820182528281524260208083018281526001600160a01b03871660008181526005845286902094518555905160019094019390935583518581529081019190915290917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c910160405180910390a2919050565b6000806000611c258686611ccb565b9150915081600003611c4a57838181611c4057611c4061204b565b0492505050610520565b818411611c6157611c616003851502601118611ce9565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b60008060001983850993909202808410938190039390930393915050565b634e487b71600052806020526024601cfd5b6001600160a01b03811681146113df57600080fd5b600060208284031215611d2257600080fd5b813561052081611cfb565b634e487b7160e01b600052602160045260246000fd5b60028110611d6157634e487b7160e01b600052602160045260246000fd5b9052565b6020810161059e8284611d43565b600060208284031215611d8557600080fd5b81356002811061052057600080fd5b600060208284031215611da657600080fd5b5035919050565b60008060408385031215611dc057600080fd5b8235611dcb81611cfb565b91506020830135611ddb81611cfb565b809150509250929050565b60008060408385031215611df957600080fd5b8235611e0481611cfb565b946020939093013593505050565b600080600060608486031215611e2757600080fd5b8335611e3281611cfb565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015611e885783516001600160a01b031683529284019291840191600101611e63565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561059e5761059e611e94565b60408101611ecb8285611d43565b6105206020830184611d43565b60408152601b60408201527f55424b4f7261636c653a3a736574436861696e6c696e6b466565640000000000606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b600060208284031215611f4357600080fd5b815160ff8116811461052057600080fd5b805169ffffffffffffffffffff8116811461139f57600080fd5b600080600080600060a08688031215611f8657600080fd5b611f8f86611f54565b9450602086015193506040860151925060608601519150611fb260808701611f54565b90509295509295909350565b60408152601a60408201527f55424b4f7261636c653a3a736574455243343632365661756c74000000000000606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b60006020828403121561202957600080fd5b815161052081611cfb565b808202811582820484141761059e5761059e611e94565b634e487b7160e01b600052601260045260246000fd5b60008261207e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156120be5781600019048211156120a4576120a4611e94565b808516156120b157918102915b93841c9390800290612088565b509250929050565b6000826120d55750600161059e565b816120e25750600061059e565b81600181146120f857600281146121025761211e565b600191505061059e565b60ff84111561211357612113611e94565b50506001821b61059e565b5060208310610133831016604e8410600b8410161715612141575081810a61059e565b61214b8383612083565b806000190482111561215f5761215f611e94565b029392505050565b600061052060ff8416836120c6565b60058152643a37b5b2b760d91b602082015260400190565b60408152601960408201527f55424b4f7261636c653a3a7365744d616e75616c507269636500000000000000606082015260806020820152600061059e60808301612176565b8082018082111561059e5761059e611e94565b60408152601d60408201527f55424b4f7261636c653a3a64697361626c654d616e75616c5072696365000000606082015260806020820152600061059e60808301612176565b60408152601e60408201527f55424b4f7261636c653a3a6665746368416e6455706461746550726963650000606082015260806020820152600061059e60808301612176565b60408152601360408201527255424b4f7261636c653a3a676574507269636560681b606082015260806020820152600061059e60808301612176565b6000602082840312156122c157600080fd5b8151801515811461052057600080fd5b6000600182016122e3576122e3611e94565b5060010190565b6000602082840312156122fc57600080fd5b5051919050565b60008161231257612312611e94565b506000190190565b60ff828116828216039081111561059e5761059e611e9456fea264697066735822122046b6f21ae12ffd1b438a4ad4c058697c30446dbe0201bbb8fcd8509d64c2696f64736f6c63430008150033",
1025
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638fef24a311610104578063cfa3d593116100a2578063e8c1650011610071578063e8c1650014610461578063ed06a12d1461048a578063f04c98ca1461049d578063f2fde38b146104bd57600080fd5b8063cfa3d593146103e9578063d3c7c2c7146103fc578063d979303314610411578063e310bd2a1461043a57600080fd5b8063a95121b5116100de578063a95121b51461039d578063c6255626146103b0578063cd4f4a9c146103c3578063ced663b0146103d657600080fd5b80638fef24a31461036e578063a5b36a3614610381578063a6f4ab2e1461038a57600080fd5b806348c87c511161017c57806371e8023c1161014b57806371e8023c146102e75780637f33780a146102fa57806387ef186a146103365780638da5cb5b1461034957600080fd5b806348c87c51146102965780634f129c53146102a957806369ef32d2146102cc578063715018a6146102df57600080fd5b8063295a5212116101b8578063295a5212146102415780633b82fdeb1461025b57806341976e09146102705780634316b5a21461028357600080fd5b80630af1a39f146101df5780630f5d559d14610207578063260f9a8b1461022a575b600080fd5b6101f26101ed366004611d10565b6104d0565b60405190151581526020015b60405180910390f35b6101f2610215366004611d10565b60046020526000908152604090205460ff1681565b61023360085481565b6040519081526020016101fe565b60095461024e9060ff1681565b6040516101fe9190611d65565b61026e610269366004611d73565b610527565b005b61023361027e366004611d10565b610593565b61026e610291366004611d94565b6105a4565b6102336102a4366004611d10565b610613565b6101f26102b7366004611d10565b600c6020526000908152604090205460ff1681565b61026e6102da366004611dad565b610664565b61026e6108cd565b61026e6102f5366004611dad565b6108e1565b610321610308366004611d10565b6005602052600090815260409020805460019091015482565b604080519283526020830191909152016101fe565b610233610344366004611de6565b610a22565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101fe565b61026e61037c366004611e12565b610afa565b61023360075481565b61026e610398366004611d94565b610c45565b61026e6103ab366004611de6565b610cb4565b6103566103be366004611d94565b610f7b565b6102336103d1366004611de6565b610fa5565b61026e6103e4366004611d10565b611068565b6102336103f7366004611d10565b6110ec565b6104046112cc565b6040516101fe9190611e47565b61035661041f366004611d10565b6002602052600090815260409020546001600160a01b031681565b610321610448366004611d10565b6006602052600090815260409020805460019091015482565b61035661046f366004611d10565b6001602052600090815260409020546001600160a01b031681565b610233610498366004611d10565b61132e565b6102336104ab366004611d10565b60036020526000908152604090205481565b61026e6104cb366004611d10565b6113a4565b6001600160a01b03811660009081526005602090815260408083208151808301909252805482526001015491810182905290158015906105205750600754602082015161051d9042611eaa565b11155b9392505050565b61052f6113e2565b6009805460ff811691839160ff19166001838181111561055157610551611d2d565b02179055507fa6972b82c1819c55fbb1eb3a5226aab6498a55b1cccd85bcffc44175751eb5738183604051610587929190611ebd565b60405180910390a15050565b600061059e8261140f565b92915050565b6105ac6113e2565b6007548110156105d7576040516301ee48e160e71b8152600481018290526024015b60405180910390fd5b60088190556040518181527fedd414ac063290211a282c8be3e328fcc6d60e4d1422ab34bc5af9a01736943d906020015b60405180910390a150565b6001600160a01b038116600090815260056020908152604080832081518083019092528054825260010154918101829052908203610655575060001992915050565b60208101516105209042611eaa565b61066c6113e2565b6001600160a01b038216158061068957506001600160a01b038116155b156106a7576040516374b58fcf60e01b81526004016105ce90611ed8565b806001600160a01b03163b6000036106dd5760405163c2b3d6a360e01b81526001600160a01b03821660048201526024016105ce565b60008190506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107469190611f31565b905060128160ff1611156107815760405163bed0220560e01b81526001600160a01b038416600482015260ff821660248201526044016105ce565b816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156107db575060408051601f3d908101601f191682019092526107d891810190611f6e565b60015b6108035760405163c2b3d6a360e01b81526001600160a01b03841660048201526024016105ce565b600084131580610811575081155b1561083a5760405163c2b3d6a360e01b81526001600160a01b03891660048201526024016105ce565b505050506001600160a01b03858116600090815260016020908152604080832080546001600160a01b031916948916949094179093556004905220805460ff191690555061088784611541565b826001600160a01b0316846001600160a01b03167fb9b75140a682094a10720170347bc8e03bfd71f1bb59d103cd8dc0782c52568360405160405180910390a350505050565b6108d56113e2565b6108df60006115f0565b565b6108e96113e2565b6001600160a01b038216158061090657506001600160a01b038116155b15610924576040516374b58fcf60e01b81526004016105ce90611fbe565b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561097e575060408051601f3d908101601f1916820190925261097b91810190612017565b60015b6109a65760405163352e446560e11b81526001600160a01b03831660048201526024016105ce565b506001600160a01b03828116600090815260026020526040902080546001600160a01b0319169183169190911790556109de82611541565b806001600160a01b0316826001600160a01b03167f456db9889a9cf62250a0d96274761be08bc928b1ea97a2b6e45d9db8b575fa0c60405160405180910390a35050565b600081600003610a345750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190611f31565b90506000610aa58561140f565b9050600081610abc670de0b6b3a764000087612034565b610ac69190612061565b9050670de0b6b3a7640000610adc84600a612167565b610ae69083612034565b610af09190612061565b9695505050505050565b610b026113e2565b6001600160a01b038316610b7757604080516374b58fcf60e01b81526004810191909152601d60448201527f55424b4f7261636c653a3a7365745661756c7452617465426f756e647300000060648201526080602482015260056084820152641d985d5b1d60da1b60a482015260c4016105ce565b811580610b845750818111155b80610b97575068056bc75e2d6310000081115b15610bce5760405163dceed17360e01b81526001600160a01b038416600482015260248101839052604481018290526064016105ce565b60408051808201825283815260208082018481526001600160a01b038716600081815260068452859020935184559051600190930192909255825185815290810184905290917f97b96731e654217eb1034ea218d533d1b086cd0ba6ba8b09735ef3e70c4d5fd491015b60405180910390a2505050565b610c4d6113e2565b610e10811080610c5e5750612a3081115b15610c7f576040516301ee48e160e71b8152600481018290526024016105ce565b60078190556040518181527f8e163815dacf2204ab589790672a86e421041804acc4cb85a7caebac33be1b2b90602001610608565b610cbc6113e2565b600160095460ff166001811115610cd557610cd5611d2d565b03610cfb576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216610d22576040516374b58fcf60e01b81526004016105ce9061218e565b6402540be400811080610d3e575069d3c21bcecceda100000081115b15610d6e57604051638366d84d60e01b81526001600160a01b0383166004820152602481018290526044016105ce565b6001600160a01b038216600090815260056020908152604091829020825180840190935280548084526001909101549183019190915215801590610dc257506007546020820151610dbf9042611eaa565b11155b15610e71576000670de0b6b3a7640000610de467016345785d8a000082611eaa565b8351610df09190612034565b610dfa9190612061565b90506000670de0b6b3a7640000610e1967016345785d8a0000826121d4565b8451610e259190612034565b610e2f9190612061565b905081841080610e3e57508084115b15610e6e57604051638366d84d60e01b81526001600160a01b0386166004820152602481018590526044016105ce565b50505b6001600160a01b038316600081815260036020908152604080832086905560048252808320805460ff191660019081179091558151808301835287815242818501908152868652600585529483902090518155935193019290925590518481527f469ff3a7ada7a8c122e2729e7041dfdabfc5e8b26802fa04d7f00706149c4e24910160405180910390a2604051600181526001600160a01b038416907f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a89060200160405180910390a2604080518381524260208201526001600160a01b038516917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c9101610c38565b600b8181548110610f8b57600080fd5b6000918252602090912001546001600160a01b0316905081565b600081600003610fb75750600061059e565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190611f31565b9050600061102a82600a612167565b61103c670de0b6b3a764000086612034565b6110469190612061565b905060006110538661140f565b9050670de0b6b3a7640000610ae68284612034565b6110706113e2565b6001600160a01b038116611097576040516374b58fcf60e01b81526004016105ce906121e7565b6001600160a01b0381166000818152600460209081526040808320805460ff19169055519182527f782cbde6cfd4fcc41b55a876a6a2983d09080438d1e4316b98042b68025a29a8910160405180910390a250565b6001600160a01b03811660009081526004602052604081205460ff161561112957506001600160a01b031660009081526003602052604090205490565b6001600160a01b03808316600090815260026020526040902054168015611154576105208382611640565b6001600160a01b03808416600090815260016020526040902054168061119857604051632a4f499d60e21b81526001600160a01b03851660048201526024016105ce565b6000806111a483611989565b9150915080156111b75750949350505050565b6001600160a01b03861660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361121657604051635a94181960e01b81526001600160a01b03881660048201526024016105ce565b60085460208201516112289042611eaa565b111561125257604051634ebf1f0f60e11b81526001600160a01b03881660048201526024016105ce565b805160408051918252426020830152606090820181905260119082015270436861696e6c696e6b206661696c75726560781b60808201526001600160a01b038816907f1037657730ddbc445dbaba678e03c33d31f7ae7f523c4f5de5f458ea5b837d399060a00160405180910390a2519695505050505050565b6060600b80548060200260200160405190810160405280929190818152602001828054801561132457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611306575b5050505050905090565b6000600160095460ff16600181111561134957611349611d2d565b0361136f576040516330bcb70560e21b81523060048201524260248201526044016105ce565b6001600160a01b038216611396576040516374b58fcf60e01b81526004016105ce9061222d565b61059e82611b45565b919050565b6113ac6113e2565b6001600160a01b0381166113d657604051631e4fbdf760e01b8152600060048201526024016105ce565b6113df816115f0565b50565b6000546001600160a01b031633146108df5760405163118cdaa760e01b81523360048201526024016105ce565b60006001600160a01b038216611438576040516374b58fcf60e01b81526004016105ce90612273565b6001600160a01b03821660009081526005602090815260408083208151808301909252805480835260019091015492820192909252910361149757604051635a94181960e01b81526001600160a01b03841660048201526024016105ce565b604051630af1a39f60e01b81526001600160a01b03841660048201523090630af1a39f90602401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff91906122af565b61153a5760208101516040516348da37e960e11b81526001600160a01b038516600482015260248101919091524260448201526064016105ce565b5192915050565b6001600160a01b0381166000908152600c602052604090205460ff166113df57600b805460018082019092557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0384169081179091556000818152600c6020526040808220805460ff1916909417909355915190917f8f50fda9bf5d3b403c53b7e91646abd507f8cebf2577655d55d7de3926168b1791a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006005600a541061166857604051630e5daffd60e11b8152600060048201526024016105ce565b600a8054906000611678836122d1565b91905055506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e19190611f31565b90506000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611723573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117479190611f31565b9050600061175683600a612167565b6040516303d1689d60e11b8152600481018290529091506000906001600160a01b038816906307a2d13a90602401602060405180830381865afa1580156117a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c591906122ea565b90508015806117e257506ec097ce7bc90715b34b9f100000000081115b1561181157604051624df74960e31b81526001600160a01b0388166004820152602481018290526044016105ce565b600061181e84600a612167565b611830670de0b6b3a764000084612034565b61183a9190612061565b9050600061184986600a612167565b61185b670de0b6b3a764000086612034565b6118659190612061565b905060008161187c670de0b6b3a764000085612034565b6118869190612061565b6001600160a01b038b1660009081526006602090815260408083208151808301909252805480835260019091015492820192909252929350156118ca5781516118d4565b6702c68af0bb1400005b9050600082602001516000146118ee5782602001516118f8565b6729a2241af62c00005b90508084118061190757508184105b156119375760405163c55e83d360e01b81526001600160a01b038e166004820152602481018590526044016105ce565b60006119428d6110ec565b9050670de0b6b3a76400006119578683612034565b6119619190612061565b9b505050505050505050505050600a805490600061197e83612303565b919050555092915050565b600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa9250505080156119e6575060408051601f3d908101601f191682019092526119e391810190611f6e565b60015b6119f557506000928392509050565b600084131580611a03575081155b80611a185750600754611a168342611eaa565b115b15611a2d575060009788975095505050505050565b6000886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a919190611f31565b905084600060ff8316601203611aa8575080611b00565b60128360ff161015611adc57611ad582611ac385601261231a565b611ace90600a612167565b6001611c16565b9050611b00565b611afd826001611aed60128761231a565b611af890600a612167565b611c16565b90505b6402540be400811080611b1c575069d3c21bcecceda100000081115b15611b34575060009a8b9a5098505050505050505050565b9a60019a5098505050505050505050565b6000611b50826110ec565b90506402540be400811080611b6e575069d3c21bcecceda100000081115b15611b9e57604051631b27609360e01b81526001600160a01b0383166004820152600060248201526044016105ce565b6040805180820182528281524260208083018281526001600160a01b03871660008181526005845286902094518555905160019094019390935583518581529081019190915290917f895efb821f241e50aca7011c501989268b4e15748c700bf77d48ff447049888c910160405180910390a2919050565b6000806000611c258686611ccb565b9150915081600003611c4a57838181611c4057611c4061204b565b0492505050610520565b818411611c6157611c616003851502601118611ce9565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b60008060001983850993909202808410938190039390930393915050565b634e487b71600052806020526024601cfd5b6001600160a01b03811681146113df57600080fd5b600060208284031215611d2257600080fd5b813561052081611cfb565b634e487b7160e01b600052602160045260246000fd5b60028110611d6157634e487b7160e01b600052602160045260246000fd5b9052565b6020810161059e8284611d43565b600060208284031215611d8557600080fd5b81356002811061052057600080fd5b600060208284031215611da657600080fd5b5035919050565b60008060408385031215611dc057600080fd5b8235611dcb81611cfb565b91506020830135611ddb81611cfb565b809150509250929050565b60008060408385031215611df957600080fd5b8235611e0481611cfb565b946020939093013593505050565b600080600060608486031215611e2757600080fd5b8335611e3281611cfb565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015611e885783516001600160a01b031683529284019291840191600101611e63565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561059e5761059e611e94565b60408101611ecb8285611d43565b6105206020830184611d43565b60408152601b60408201527f55424b4f7261636c653a3a736574436861696e6c696e6b466565640000000000606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b600060208284031215611f4357600080fd5b815160ff8116811461052057600080fd5b805169ffffffffffffffffffff8116811461139f57600080fd5b600080600080600060a08688031215611f8657600080fd5b611f8f86611f54565b9450602086015193506040860151925060608601519150611fb260808701611f54565b90509295509295909350565b60408152601a60408201527f55424b4f7261636c653a3a736574455243343632365661756c74000000000000606082015260806020820152600061059e6080830160058152641a5b9c1d5d60da1b602082015260400190565b60006020828403121561202957600080fd5b815161052081611cfb565b808202811582820484141761059e5761059e611e94565b634e487b7160e01b600052601260045260246000fd5b60008261207e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156120be5781600019048211156120a4576120a4611e94565b808516156120b157918102915b93841c9390800290612088565b509250929050565b6000826120d55750600161059e565b816120e25750600061059e565b81600181146120f857600281146121025761211e565b600191505061059e565b60ff84111561211357612113611e94565b50506001821b61059e565b5060208310610133831016604e8410600b8410161715612141575081810a61059e565b61214b8383612083565b806000190482111561215f5761215f611e94565b029392505050565b600061052060ff8416836120c6565b60058152643a37b5b2b760d91b602082015260400190565b60408152601960408201527f55424b4f7261636c653a3a7365744d616e75616c507269636500000000000000606082015260806020820152600061059e60808301612176565b8082018082111561059e5761059e611e94565b60408152601d60408201527f55424b4f7261636c653a3a64697361626c654d616e75616c5072696365000000606082015260806020820152600061059e60808301612176565b60408152601e60408201527f55424b4f7261636c653a3a6665746368416e6455706461746550726963650000606082015260806020820152600061059e60808301612176565b60408152601360408201527255424b4f7261636c653a3a676574507269636560681b606082015260806020820152600061059e60808301612176565b6000602082840312156122c157600080fd5b8151801515811461052057600080fd5b6000600182016122e3576122e3611e94565b5060010190565b6000602082840312156122fc57600080fd5b5051919050565b60008161231257612312611e94565b506000190190565b60ff828116828216039081111561059e5761059e611e9456fea264697066735822122046b6f21ae12ffd1b438a4ad4c058697c30446dbe0201bbb8fcd8509d64c2696f64736f6c63430008150033",
1026
1026
  "linkReferences": {},
1027
1027
  "deployedLinkReferences": {}
1028
1028
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/59a7a86e788a7471c2e99b922236c2bf.json"
3
+ "buildInfo": "../../../build-info/c04fe46bfd9dbe62256a68be548afa14.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/59a7a86e788a7471c2e99b922236c2bf.json"
3
+ "buildInfo": "../../../build-info/c04fe46bfd9dbe62256a68be548afa14.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/59a7a86e788a7471c2e99b922236c2bf.json"
3
+ "buildInfo": "../../../build-info/c04fe46bfd9dbe62256a68be548afa14.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/59a7a86e788a7471c2e99b922236c2bf.json"
3
+ "buildInfo": "../../../build-info/c04fe46bfd9dbe62256a68be548afa14.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../build-info/59a7a86e788a7471c2e99b922236c2bf.json"
3
+ "buildInfo": "../../build-info/c04fe46bfd9dbe62256a68be548afa14.json"
4
4
  }
@@ -237,6 +237,30 @@
237
237
  "stateMutability": "nonpayable",
238
238
  "type": "function"
239
239
  },
240
+ {
241
+ "inputs": [
242
+ {
243
+ "internalType": "address",
244
+ "name": "token",
245
+ "type": "address"
246
+ },
247
+ {
248
+ "internalType": "uint256",
249
+ "name": "usdAmount",
250
+ "type": "uint256"
251
+ }
252
+ ],
253
+ "name": "fromUSD",
254
+ "outputs": [
255
+ {
256
+ "internalType": "uint256",
257
+ "name": "tokenAmount",
258
+ "type": "uint256"
259
+ }
260
+ ],
261
+ "stateMutability": "view",
262
+ "type": "function"
263
+ },
240
264
  {
241
265
  "inputs": [
242
266
  {
@@ -255,6 +279,30 @@
255
279
  ],
256
280
  "stateMutability": "view",
257
281
  "type": "function"
282
+ },
283
+ {
284
+ "inputs": [
285
+ {
286
+ "internalType": "address",
287
+ "name": "token",
288
+ "type": "address"
289
+ },
290
+ {
291
+ "internalType": "uint256",
292
+ "name": "amount",
293
+ "type": "uint256"
294
+ }
295
+ ],
296
+ "name": "toUSD",
297
+ "outputs": [
298
+ {
299
+ "internalType": "uint256",
300
+ "name": "usdValue",
301
+ "type": "uint256"
302
+ }
303
+ ],
304
+ "stateMutability": "view",
305
+ "type": "function"
258
306
  }
259
307
  ],
260
308
  "bytecode": "0x",
@@ -1,24 +1,28 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- library Constants {
4
+ import "@ubk-labs/ubk-commons/commons/UBKConstants.sol";
5
+
6
+
7
+ library UBKOracleConstants {
5
8
  // -----------------------------------------------------------------------
6
- // Fixed-point Math
9
+ // UBK System Constants
7
10
  // -----------------------------------------------------------------------
8
- uint256 public constant WAD = 1e18; // Fixed-point math base
11
+
12
+ uint256 public constant WAD = UBKConstants.WAD;
9
13
 
10
14
  // -----------------------------------------------------------------------
11
15
  // Oracle Price Bounds
12
16
  // -----------------------------------------------------------------------
13
- uint256 public constant ORACLE_MANUAL_PRICE_MAX_DELTA_WAD = 0.1e18; // 10%
14
- uint256 public constant ORACLE_MIN_ABSOLUTE_PRICE_WAD = 1e10; // 0.00000001
15
- uint256 public constant ORACLE_MAX_ABSOLUTE_PRICE_WAD = 1e24; // 1,000,000
17
+ uint256 public constant ORACLE_MANUAL_PRICE_MAX_DELTA_WAD = 0.1e18; // 10%
18
+ uint256 public constant ORACLE_MIN_ABSOLUTE_PRICE_WAD = 1e10; // 0.00000001
19
+ uint256 public constant ORACLE_MAX_ABSOLUTE_PRICE_WAD = 1e24; // 1,000,000
16
20
 
17
21
  // -----------------------------------------------------------------------
18
22
  // Oracle Vault Rate Bounds
19
23
  // -----------------------------------------------------------------------
20
- uint256 public constant ORACLE_MIN_VAULT_RATE_WAD = 0.2e18; // 0.2x (20%)
21
- uint256 public constant ORACLE_MAX_VAULT_RATE_WAD = 3e18; // 3x (300%)
24
+ uint256 public constant ORACLE_MIN_VAULT_RATE_WAD = 0.2e18; // 0.2x (20%)
25
+ uint256 public constant ORACLE_MAX_VAULT_RATE_WAD = 3e18; // 3x (300%)
22
26
 
23
27
  // -----------------------------------------------------------------------
24
28
  // Oracle Staleness Periods
@@ -31,4 +35,4 @@ library Constants {
31
35
  // Oracle Recursion
32
36
  // -----------------------------------------------------------------------
33
37
  uint256 public constant MAX_RECURSION_DEPTH = 5;
34
- }
38
+ }
@@ -9,8 +9,8 @@ import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
9
9
  import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
10
10
 
11
11
  import "../../interfaces/IUBKOracle.sol";
12
- import "../errors/Errors.sol";
13
- import "../constants/Constants.sol";
12
+ import "../errors/UBKOracleErrors.sol";
13
+ import "../constants/UBKOracleConstants.sol";
14
14
 
15
15
  /**
16
16
  * @title Oracle
@@ -21,9 +21,9 @@ import "../constants/Constants.sol";
21
21
  * combining manual overrides, ERC4626 vault conversions, and Chainlink feeds.
22
22
  *
23
23
  * === PRICE RESOLUTION ORDER ===
24
- * 1️⃣ Manual override (±10% bound from last valid)
25
- * 2️⃣ ERC4626 vault-derived (convertToAssets * underlying price)
26
- * 3️⃣ Chainlink feed (normalized to 1e18)
24
+ * 1️. Manual override (±10% bound from last valid)
25
+ * 2. ERC4626 vault-derived (convertToAssets * underlying price)
26
+ * 3️. Chainlink feed (normalized to 1e18)
27
27
  *
28
28
  * === SAFETY FEATURES ===
29
29
  * - Recursion guard (nested ERC4626 depth ≤ 5)
@@ -63,11 +63,11 @@ contract UBKOracle is IUBKOracle, Ownable {
63
63
  mapping(address => VaultRateBounds) public vaultRateBounds;
64
64
 
65
65
  /// @notice Maximum staleness period for Chainlink feeds (seconds).
66
- uint256 public stalePeriod = Constants.ORACLE_DEFAULT_STALE_PERIOD;
66
+ uint256 public stalePeriod = UBKOracleConstants.ORACLE_DEFAULT_STALE_PERIOD;
67
67
 
68
68
  /// @notice Staleness tolerance for fallback prices (seconds).
69
69
  uint256 public fallbackStalePeriod =
70
- Constants.ORACLE_DEFAULT_STALE_PERIOD * 2;
70
+ UBKOracleConstants.ORACLE_DEFAULT_STALE_PERIOD * 2;
71
71
 
72
72
  OracleMode public mode = OracleMode.NORMAL;
73
73
 
@@ -90,7 +90,7 @@ contract UBKOracle is IUBKOracle, Ownable {
90
90
  */
91
91
  constructor(address _owner) Ownable(_owner) {
92
92
  if (_owner == address(0))
93
- revert ZeroAddress("Oracle:constructor", "owner");
93
+ revert ZeroAddress("UBKOracle::constructor", "owner");
94
94
  }
95
95
 
96
96
  /// @notice Ensures oracle is not paused.
@@ -102,7 +102,7 @@ contract UBKOracle is IUBKOracle, Ownable {
102
102
 
103
103
  /// @notice Prevents infinite recursion when resolving nested ERC4626 vaults.
104
104
  modifier checkRecursion() {
105
- if (_recursionDepth >= Constants.MAX_RECURSION_DEPTH)
105
+ if (_recursionDepth >= UBKOracleConstants.MAX_RECURSION_DEPTH)
106
106
  revert RecursiveResolution(address(0));
107
107
  _recursionDepth++;
108
108
  _;
@@ -126,12 +126,12 @@ contract UBKOracle is IUBKOracle, Ownable {
126
126
  /**
127
127
  * @notice Sets the maximum time (in seconds) a Chainlink feed value is valid.
128
128
  * @param period The new staleness threshold.
129
- * @dev Must lie within [Constants.ORACLE_MIN_STALE_PERIOD, Constants.ORACLE_MAX_STALE_PERIOD].
129
+ * @dev Must lie within [UBKOracleConstants.ORACLE_MIN_STALE_PERIOD, UBKOracleConstants.ORACLE_MAX_STALE_PERIOD].
130
130
  */
131
131
  function setStalePeriod(uint256 period) external onlyOwner {
132
132
  if (
133
- period < Constants.ORACLE_MIN_STALE_PERIOD ||
134
- period > Constants.ORACLE_MAX_STALE_PERIOD
133
+ period < UBKOracleConstants.ORACLE_MIN_STALE_PERIOD ||
134
+ period > UBKOracleConstants.ORACLE_MAX_STALE_PERIOD
135
135
  ) revert InvalidStalePeriod(period);
136
136
  stalePeriod = period;
137
137
  emit StalePeriodUpdated(period);
@@ -161,7 +161,7 @@ contract UBKOracle is IUBKOracle, Ownable {
161
161
  uint256 maxRate
162
162
  ) external onlyOwner {
163
163
  if (vault == address(0))
164
- revert ZeroAddress("Oracle:setVaultRateBounds", "vault");
164
+ revert ZeroAddress("UBKOracle::setVaultRateBounds", "vault");
165
165
  if (minRate == 0 || maxRate <= minRate || maxRate > 100e18)
166
166
  revert InvalidVaultBounds(vault, minRate, maxRate);
167
167
 
@@ -181,20 +181,20 @@ contract UBKOracle is IUBKOracle, Ownable {
181
181
  uint256 price
182
182
  ) external onlyOwner whenNotPaused {
183
183
  if (token == address(0))
184
- revert ZeroAddress("Oracle:setManualPrice", "token");
184
+ revert ZeroAddress("UBKOracle::setManualPrice", "token");
185
185
  if (
186
- price < Constants.ORACLE_MIN_ABSOLUTE_PRICE_WAD ||
187
- price > Constants.ORACLE_MAX_ABSOLUTE_PRICE_WAD
186
+ price < UBKOracleConstants.ORACLE_MIN_ABSOLUTE_PRICE_WAD ||
187
+ price > UBKOracleConstants.ORACLE_MAX_ABSOLUTE_PRICE_WAD
188
188
  ) revert InvalidManualPrice(token, price);
189
189
 
190
190
  LastValidPrice memory lv = lastValidPrice[token];
191
191
  if (lv.price > 0 && block.timestamp - lv.timestamp <= stalePeriod) {
192
192
  uint256 lowerBound = (lv.price *
193
- (Constants.WAD - Constants.ORACLE_MANUAL_PRICE_MAX_DELTA_WAD)) /
194
- Constants.WAD;
193
+ (UBKOracleConstants.WAD - UBKOracleConstants.ORACLE_MANUAL_PRICE_MAX_DELTA_WAD)) /
194
+ UBKOracleConstants.WAD;
195
195
  uint256 upperBound = (lv.price *
196
- (Constants.WAD + Constants.ORACLE_MANUAL_PRICE_MAX_DELTA_WAD)) /
197
- Constants.WAD;
196
+ (UBKOracleConstants.WAD + UBKOracleConstants.ORACLE_MANUAL_PRICE_MAX_DELTA_WAD)) /
197
+ UBKOracleConstants.WAD;
198
198
  if (price < lowerBound || price > upperBound)
199
199
  revert InvalidManualPrice(token, price);
200
200
  }
@@ -214,7 +214,7 @@ contract UBKOracle is IUBKOracle, Ownable {
214
214
  */
215
215
  function disableManualPrice(address token) external onlyOwner {
216
216
  if (token == address(0))
217
- revert ZeroAddress("Oracle:disableManualPrice", "token");
217
+ revert ZeroAddress("UBKOracle::disableManualPrice", "token");
218
218
  isManual[token] = false;
219
219
  emit ManualModeEnabled(token, false);
220
220
  }
@@ -227,7 +227,7 @@ contract UBKOracle is IUBKOracle, Ownable {
227
227
  */
228
228
  function setChainlinkFeed(address token, address feed) external onlyOwner {
229
229
  if (token == address(0) || feed == address(0))
230
- revert ZeroAddress("Oracle:setChainlinkFeed", "input");
230
+ revert ZeroAddress("UBKOracle::setChainlinkFeed", "input");
231
231
  if (feed.code.length == 0) revert InvalidFeedContract(feed);
232
232
 
233
233
  AggregatorV3Interface agg = AggregatorV3Interface(feed);
@@ -264,7 +264,7 @@ contract UBKOracle is IUBKOracle, Ownable {
264
264
  address underlying
265
265
  ) external onlyOwner {
266
266
  if (vault == address(0) || underlying == address(0))
267
- revert ZeroAddress("Oracle:setERC4626Vault", "input");
267
+ revert ZeroAddress("UBKOracle::setERC4626Vault", "input");
268
268
  try IERC4626(vault).asset() returns (address) {} catch {
269
269
  revert InvalidERC4626Vault(vault);
270
270
  }
@@ -295,7 +295,7 @@ contract UBKOracle is IUBKOracle, Ownable {
295
295
  address token
296
296
  ) external whenNotPaused returns (uint256) {
297
297
  if (token == address(0))
298
- revert ZeroAddress("Oracle:fetchAndUpdatePrice", "token");
298
+ revert ZeroAddress("UBKOracle::fetchAndUpdatePrice", "token");
299
299
  return _fetchAndUpdatePrice(token);
300
300
  }
301
301
 
@@ -352,9 +352,9 @@ contract UBKOracle is IUBKOracle, Ownable {
352
352
  ) external view returns (uint256 usdValue) {
353
353
  if (amount == 0) return 0;
354
354
  uint8 decimals = IERC20Metadata(token).decimals();
355
- uint256 normalized = (amount * Constants.WAD) / (10 ** decimals);
355
+ uint256 normalized = (amount * UBKOracleConstants.WAD) / (10 ** decimals);
356
356
  uint256 price = _getPrice(token); // 18 decimals
357
- usdValue = (normalized * price) / Constants.WAD;
357
+ usdValue = (normalized * price) / UBKOracleConstants.WAD;
358
358
  }
359
359
 
360
360
  /**
@@ -370,8 +370,8 @@ contract UBKOracle is IUBKOracle, Ownable {
370
370
  if (usdAmount == 0) return 0;
371
371
  uint8 decimals = IERC20Metadata(token).decimals();
372
372
  uint256 price = _getPrice(token); // 18 decimals
373
- uint256 normalized = (usdAmount * Constants.WAD) / price;
374
- tokenAmount = (normalized * (10 ** decimals)) / Constants.WAD;
373
+ uint256 normalized = (usdAmount * UBKOracleConstants.WAD) / price;
374
+ tokenAmount = (normalized * (10 ** decimals)) / UBKOracleConstants.WAD;
375
375
  }
376
376
 
377
377
  // -----------------------------------------------------------------------
@@ -385,7 +385,7 @@ contract UBKOracle is IUBKOracle, Ownable {
385
385
  * @return price Cached price in 1e18 precision.
386
386
  */
387
387
  function _getPrice(address token) internal view returns (uint256) {
388
- if (token == address(0)) revert ZeroAddress("Oracle:getPrice", "token");
388
+ if (token == address(0)) revert ZeroAddress("UBKOracle::getPrice", "token");
389
389
  LastValidPrice memory lv = lastValidPrice[token];
390
390
  if (lv.price == 0) revert NoFallbackPrice(token);
391
391
  if (!this.isPriceFresh(token))
@@ -412,24 +412,24 @@ contract UBKOracle is IUBKOracle, Ownable {
412
412
  if (assetsPerShare == 0 || assetsPerShare > 1e36)
413
413
  revert InvalidVaultExchangeRate(vault, assetsPerShare);
414
414
 
415
- uint256 scaledAssets = (assetsPerShare * Constants.WAD) /
415
+ uint256 scaledAssets = (assetsPerShare * UBKOracleConstants.WAD) /
416
416
  (10 ** underlyingDecimals);
417
- uint256 scaledShare = (oneShare * Constants.WAD) /
417
+ uint256 scaledShare = (oneShare * UBKOracleConstants.WAD) /
418
418
  (10 ** shareDecimals);
419
- uint256 rate = (scaledAssets * Constants.WAD) / scaledShare;
419
+ uint256 rate = (scaledAssets * UBKOracleConstants.WAD) / scaledShare;
420
420
 
421
421
  VaultRateBounds memory bounds = vaultRateBounds[vault];
422
422
  uint256 minRate = bounds.minRate == 0
423
- ? Constants.ORACLE_MIN_VAULT_RATE_WAD
423
+ ? UBKOracleConstants.ORACLE_MIN_VAULT_RATE_WAD
424
424
  : bounds.minRate;
425
425
  uint256 maxRate = bounds.maxRate == 0
426
- ? Constants.ORACLE_MAX_VAULT_RATE_WAD
426
+ ? UBKOracleConstants.ORACLE_MAX_VAULT_RATE_WAD
427
427
  : bounds.maxRate;
428
428
  if (rate > maxRate || rate < minRate)
429
429
  revert SuspiciousVaultRate(vault, rate);
430
430
 
431
431
  uint256 underlyingPrice = resolvePrice(underlying);
432
- return (underlyingPrice * rate) / Constants.WAD;
432
+ return (underlyingPrice * rate) / UBKOracleConstants.WAD;
433
433
  }
434
434
 
435
435
  /**
@@ -478,8 +478,8 @@ contract UBKOracle is IUBKOracle, Ownable {
478
478
  }
479
479
 
480
480
  if (
481
- clPrice < Constants.ORACLE_MIN_ABSOLUTE_PRICE_WAD ||
482
- clPrice > Constants.ORACLE_MAX_ABSOLUTE_PRICE_WAD
481
+ clPrice < UBKOracleConstants.ORACLE_MIN_ABSOLUTE_PRICE_WAD ||
482
+ clPrice > UBKOracleConstants.ORACLE_MAX_ABSOLUTE_PRICE_WAD
483
483
  ) return (0, false);
484
484
 
485
485
  return (clPrice, true);
@@ -531,8 +531,8 @@ contract UBKOracle is IUBKOracle, Ownable {
531
531
  ) internal returns (uint256 price) {
532
532
  price = resolvePrice(token);
533
533
  if (
534
- price < Constants.ORACLE_MIN_ABSOLUTE_PRICE_WAD ||
535
- price > Constants.ORACLE_MAX_ABSOLUTE_PRICE_WAD
534
+ price < UBKOracleConstants.ORACLE_MIN_ABSOLUTE_PRICE_WAD ||
535
+ price > UBKOracleConstants.ORACLE_MAX_ABSOLUTE_PRICE_WAD
536
536
  ) revert InvalidOraclePrice(token, address(0));
537
537
 
538
538
  lastValidPrice[token] = LastValidPrice(price, block.timestamp);
@@ -1,5 +1,9 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "@ubk-labs/ubk-commons/commons/UBKErrors.sol";
5
+
1
6
  // ───────────── Errors ─────────────
2
- error ZeroAddress(string functionName, string field);
3
7
  error InvalidManualPrice(address token, uint256 price);
4
8
  error InvalidStalePeriod(uint256 period);
5
9
  error InvalidVaultBounds(address vault, uint256 minRate, uint256 maxRate);
@@ -48,6 +48,14 @@ interface IUBKOracle {
48
48
 
49
49
  // View Functions
50
50
  function getPrice(address token) external view returns (uint256);
51
+ function toUSD(
52
+ address token,
53
+ uint256 amount
54
+ ) external view returns (uint256 usdValue);
55
+ function fromUSD(
56
+ address token,
57
+ uint256 usdAmount
58
+ ) external view returns (uint256 tokenAmount);
51
59
 
52
60
  // Mutators
53
61
  function fetchAndUpdatePrice(address token) external returns (uint256);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ubk-labs/ubk-oracle",
3
- "version": "0.1.2",
3
+ "version": "0.1.5",
4
4
  "description": "Oracle supporting ERC-20 and ERC-4626 assets for use in decentralized financial applications.",
5
5
  "scripts": {
6
6
  "build": "npx hardhat compile",
@@ -36,6 +36,7 @@
36
36
  "solidity-coverage": "^0.8.16"
37
37
  },
38
38
  "dependencies": {
39
- "@chainlink/contracts": "^0.6.1"
39
+ "@chainlink/contracts": "^0.6.1",
40
+ "@ubk-labs/ubk-commons": "^0.1.1"
40
41
  }
41
- }
42
+ }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/59a7a86e788a7471c2e99b922236c2bf.json"
4
- }