@orbs-network/twap 1.5.7 → 1.5.9-0

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.
@@ -3,6 +3,17 @@
3
3
  "contractName": "TWAP",
4
4
  "sourceName": "contracts/TWAP.sol",
5
5
  "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_iweth",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
6
17
  {
7
18
  "anonymous": false,
8
19
  "inputs": [
@@ -613,6 +624,19 @@
613
624
  "stateMutability": "nonpayable",
614
625
  "type": "function"
615
626
  },
627
+ {
628
+ "inputs": [],
629
+ "name": "iweth",
630
+ "outputs": [
631
+ {
632
+ "internalType": "address",
633
+ "name": "",
634
+ "type": "address"
635
+ }
636
+ ],
637
+ "stateMutability": "view",
638
+ "type": "function"
639
+ },
616
640
  {
617
641
  "inputs": [],
618
642
  "name": "length",
@@ -842,8 +866,8 @@
842
866
  "type": "function"
843
867
  }
844
868
  ],
845
- "bytecode": "0x608060405234801561001057600080fd5b50600160005561319b806100256000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806356f65bee116100a257806385e471d51161007157806385e471d514610225578063a0b94e0b14610238578063a3d890b614610258578063f58e65b814610262578063ffa1ad741461027557600080fd5b806356f65bee146101f85780636352c26214610200578063724f27ee14610213578063805d835d1461021b57600080fd5b80633ab22f01116100e95780633ab22f01146101a257806342d21ef7146101b5578063454b1580146101c85780634c125e79146101d057806352e8b288146101e557600080fd5b80630392c34a1461011b5780631116fd0414610144578063112017a7146101695780631f7b6d3214610186575b600080fd5b61012e610129366004612955565b61028f565b60405161013b9190612970565b60405180910390f35b6101576101523660046129bd565b61032d565b60405161013b96959493929190612b61565b610171600a81565b60405163ffffffff909116815260200161013b565b6001545b6040516001600160401b03909116815260200161013b565b61018a6101b0366004612bad565b610508565b6101716101c33660046129bd565b610554565b610171600581565b6101e36101de366004612bee565b61058e565b005b6101e36101f3366004612bee565b6108b2565b610171600181565b61018a61020e366004612c1d565b610c1e565b610171600281565b610171620186a081565b6101e3610233366004612bee565b611203565b61024b610246366004612bee565b6113df565b60405161013b9190612cb0565b61017162018a8881565b6101e3610270366004612d1d565b61163c565b61027d600281565b60405160ff909116815260200161013b565b6001600160a01b03811660009081526003602090815260409182902080548351818402810184019094528084526060939283018282801561032157602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116102de5790505b50505050509050919050565b6001818154811061033d57600080fd5b6000918252602091829020600f90910201805460018201546040805161016081018252600285015463ffffffff81811683526401000000008083048216848a0152600160401b808404831685870152600160601b93849004831660608087019190915260038a01546001600160a01b0390811660808089019190915260048c0154821660a0808a019190915260058d0154831660c0808b019190915260068e0154841660e08b015260078e01546101008b015260088e01546101208b015260098e01546101408b01528a519081018b52600a8e018054808a1683529790970484169e81019e909e52600b8d0154909216988d0198909852600c8b0154918c0191909152600d8a0154968b0196909652600e890180546001600160401b038a169c5091890484169a949098049092169795969395949293909284019161048190612dc9565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad90612dc9565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b505050505081525050905086565b6003602052816000526040600020818154811061052457600080fd5b9060005260206000209060049182820401919006600802915091509054906101000a90046001600160401b031681565b6002818154811061056457600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b61059661196a565b60006105a1826113df565b90508060800151608001516001600160a01b0316336001600160a01b0316146105f95760405162461bcd60e51b815260206004820152600560248201526436b0b5b2b960d91b60448201526064015b60405180910390fd5b60016002836001600160401b03168154811061061757610617612e03565b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055506001816020019063ffffffff16908163ffffffff1681525050806001836001600160401b03168154811061068057610680612e03565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e84019061084c9082612e75565b505050608080840151015183516040513381526001600160a01b0390921693506001600160401b031691507f84433a3c591ac98de0b89e7fc7a3d5d6705a3cbec760e7d529439c65d6feb3099060200160405180910390a3506108af6001600055565b50565b6108ba61196a565b60006108c5826113df565b90506000806000806108d6856119c3565b929650909450925090506108ea8584611d25565b60808581015181015160608088015160408051338152602081018990528082018890529283018690529382015291516001600160a01b03878116939216916001600160401b038a16917fc7529bc0224b03ba593d84e2064baeac956a4221ca93d37af0f1810ad17df7a99181900360a00190a461096685611d7d565b600003610a2057600280876001600160401b03168154811061098a5761098a612e03565b60009182526020918290206008820401805460079092166004026101000a63ffffffff81810219909316949092169190910292909217909155600286820152608080870151015186516040513381526001600160a01b03888116949316926001600160401b03909216917fd08d3326dcd14f1021feb19d05834c4f6d0b7ff1fecac35981f24fd5f73873c5910160405180910390a45b846001876001600160401b031681548110610a3d57610a3d612e03565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e840190610c099082612e75565b50505090505050505050506108af6001600055565b6000610c2861196a565b6001600160a01b03891615801590610c4857506001600160a01b03881615155b8015610c665750876001600160a01b0316896001600160a01b031614155b8015610c725750600087115b8015610c7e5750600086115b8015610c8a5750868611155b8015610c965750600085115b8015610ca75750428463ffffffff16115b8015610cba5750600a63ffffffff841610155b610cef5760405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b60448201526064016105f0565b6000610d0b610cfd60015490565b8686868f8f8f8f8f8f611db0565b9050610d1681611f9f565b60018054808201825560009190915281517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6600f90920291820180546020808601516040808801516001600160401b039096166001600160601b031990941693909317600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b97841688021786556060808a01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf78a01556080808b015180517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf88c018054838a0151848c015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a1690980290961695909517908716909a0299909917909255878201517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf98a0180546001600160a01b03199081166001600160a01b039384161790915560a0808b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa8d018054841691851691909117905560c08b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfb8d018054841691851691909117905560e08b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfc8d01805484169185169190911790556101008b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfd8d01556101208b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfe8d0155610140909a01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cff8c0155898c015180517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d008d01805499830151919098166001600160c01b031990991698909817978316909502969096178555958301517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d018a018054909616961695909517909355928301517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d02870155908201517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d03860155928101518594929391927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d0401906110be9082612e75565b505050505060028590806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908363ffffffff16021790555060036000336001600160a01b03166001600160a01b03168152602001908152602001600020816000015190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a8154816001600160401b0302191690836001600160401b031602179055508a6001600160a01b0316336001600160a01b031682600001516001600160401b03167f831701c9313a778469897164a19ddd1867959a91eada7cc21adf0936761c837084608001516040516111e19190612f34565b60405180910390a45190506111f66001600055565b9998505050505050505050565b61120b61196a565b6000611216826113df565b9050806020015163ffffffff1642106112415760405162461bcd60e51b81526004016105f090612f43565b80608001516060015181604001516112599190612f79565b63ffffffff16421161129a5760405162461bcd60e51b815260206004820152600a60248201526966696c6c2064656c617960b01b60448201526064016105f0565b6112a381611d7d565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b03918216600482015230602482015291169063dd62ed3e90604401602060405180830381865afa1580156112fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113219190612f9d565b10806113ab575061133181611d7d565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190612f9d565b105b6105f95760405162461bcd60e51b81526020600482015260056024820152641d985b1a5960da1b60448201526064016105f0565b6113e761285d565b6001546001600160401b0316826001600160401b0316106114375760405162461bcd60e51b815260206004820152600a6024820152691a5b9d985b1a59081a5960b21b60448201526064016105f0565b6001826001600160401b03168154811061145357611453612e03565b60009182526020918290206040805160c08082018352600f90940290920180546001600160401b038116845263ffffffff600160401b808304821686890152600160601b928390048216868601526001840154606080880191909152855161016081018752600286015480851682526401000000008082048616838d01529381048516828901529490940483168482015260038501546001600160a01b039081166080868101919091526004870154821660a08088019190915260058801548316878c01526006880154831660e0880152600788015461010088015260088801546101208801526009880154610140880152818a01969096528751998a018852600a870180549586168b5293909404811699890199909952600b85015490981694870194909452600c83015496860196909652600d82015495850195909552600e810180549395919482870194909392840191906115b090612dc9565b80601f01602080910402602001604051908101604052809291908181526020018280546115dc90612dc9565b80156116295780601f106115fe57610100808354040283529160200191611629565b820191906000526020600020905b81548152906001019060200180831161160c57829003601f168201915b5050509190925250505090525092915050565b61164461196a565b6001600160a01b038516158015906116645750620186a063ffffffff8416105b6116995760405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b60448201526064016105f0565b60006116a4876113df565b905060006116b6828888888888612125565b905061170087828887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089969594939250506123c49050565b816001896001600160401b03168154811061171d5761171d612e03565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e8401906118e99082612e75565b505050905050866001600160a01b03168260800151608001516001600160a01b031683600001516001600160401b03167fc6c7dd24446d66051e106d8289c1e1e3657b16ae283f4824b89417b1ec39664f888660a0015160405161194e929190612fb6565b60405180910390a450506119626001600055565b505050505050565b6002600054036119bc5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105f0565b6002600055565b6000806000808460a00151602001516001600160a01b0316336001600160a01b031614611a1a5760405162461bcd60e51b81526020600482015260056024820152643a30b5b2b960d91b60448201526064016105f0565b846020015163ffffffff164210611a435760405162461bcd60e51b81526004016105f090612f43565b60808501516040015160a086015151611a5c9190612f79565b63ffffffff164211611a9c5760405162461bcd60e51b81526020600482015260096024820152686269642064656c617960b81b60448201526064016105f0565b5060a08401516040810151608090910151909350611ab985611d7d565b92506000611ac68661242d565b6080808801519081015160c090910151919250611aee916001600160a01b0316903087612449565b608086015160c001516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b609190612f9d565b608087015160c00151909450611b80906001600160a01b031686866124ba565b608086015160c081015160e0909101516001600160a01b03871691632506c0189187611bac8787612fd5565b8b60a0015160a001516040518663ffffffff1660e01b8152600401611bd5959493929190612fe8565b600060405180830381600087803b158015611bef57600080fd5b505af1158015611c03573d6000803e3d6000fd5b505050608087015160e001516040516370a0823160e01b81523060048201526001600160a01b0390911691506370a0823190602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c799190612f9d565b9250611c858284613022565b925080831015611cc15760405162461bcd60e51b81526020600482015260076024820152661b5a5b881bdd5d60ca1b60448201526064016105f0565b611cef8660a001516020015183886080015160e001516001600160a01b031661256c9092919063ffffffff16565b611d1d86608001516080015184886080015160e001516001600160a01b031661256c9092919063ffffffff16565b509193509193565b63ffffffff4210611d485760405162461bcd60e51b81526004016105f090613035565b8160a001611d546128eb565b905263ffffffff42166040830152606082018051829190611d76908390612fd5565b9052505050565b6000611daa82608001516101200151836060015184608001516101000151611da59190613022565b6125a1565b92915050565b611db861285d565b63ffffffff4210611ddb5760405162461bcd60e51b81526004016105f090613035565b63ffffffff8a8116108015611df5575063ffffffff898116105b8015611e06575063ffffffff888116105b611e3b5760405162461bcd60e51b81526020600482015260066024820152653ab4b73a199960d11b60448201526064016105f0565b6040518060c001604052808c6001600160401b031681526020018b63ffffffff168152602001600063ffffffff168152602001600081526020016040518061016001604052804263ffffffff1681526020018d63ffffffff1681526020018c63ffffffff1681526020018b63ffffffff168152602001336001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b03168152602001886001600160a01b031681526020018781526020018681526020018581525081526020016040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160401b03811115611f6157611f61612e19565b6040519080825280601f01601f191660200182016040528015611f8b576020820181803683370190505b50905290529b9a5050505050505050505050565b611fa881611d7d565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b03918216600482015230602482015291169063dd62ed3e90604401602060405180830381865afa158015612002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120269190612f9d565b10156120665760405162461bcd60e51b815260206004820152600f60248201526e6d616b657220616c6c6f77616e636560881b60448201526064016105f0565b61206f81611d7d565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa1580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e79190612f9d565b10156108af5760405162461bcd60e51b815260206004820152600d60248201526c6d616b65722062616c616e636560981b60448201526064016105f0565b6000866020015163ffffffff1642106121505760405162461bcd60e51b81526004016105f090612f43565b86608001516060015187604001516121689190612f79565b63ffffffff1642116121a95760405162461bcd60e51b815260206004820152600a60248201526966696c6c2064656c617960b01b60448201526064016105f0565b608087015160a001516001600160a01b031615806121e05750856001600160a01b0316876080015160a001516001600160a01b0316145b6122175760405162461bcd60e51b815260206004820152600860248201526765786368616e676560c01b60448201526064016105f0565b856001600160a01b031663650967b5886080015160c00151896080015160e001516122418b611d7d565b87876040518663ffffffff1660e01b8152600401612263959493929190613053565b602060405180830381865afa158015612280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a49190612f9d565b9050620186a06122ba63ffffffff8616836130a7565b6122c491906130c6565b6122ce9082613022565b90506122da8582613022565b60a088015160600151909150620186a0906122f99062018a88906130a7565b61230391906130c6565b8111806123395750600587608001516040015161232091906130e8565b60a0880151516123309190612f79565b63ffffffff1642115b61236f5760405162461bcd60e51b81526020600482015260076024820152661b1bddc8189a5960ca1b60448201526064016105f0565b612378876125b9565b8110156123b15760405162461bcd60e51b81526020600482015260076024820152661b5a5b881bdd5d60ca1b60448201526064016105f0565b6123ba87611f9f565b9695505050505050565b63ffffffff42106123e75760405162461bcd60e51b81526004016105f090613035565b6040805160c08101825263ffffffff421681523360208201526001600160a01b0395909516908501526060840192909252608083015260a0808301919091529190910152565b6000611daa8260a0015160600151612444846125b9565b6125ec565b6040516001600160a01b03808516602483015283166044820152606481018290526124b49085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125fb565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f9190612f9d565b6125399190612fd5565b6040516001600160a01b0385166024820152604481018290529091506124b490859063095ea7b360e01b9060640161247d565b6040516001600160a01b03831660248201526044810182905261259c90849063a9059cbb60e01b9060640161247d565b505050565b60008183106125b057816125b2565b825b9392505050565b6000816080015161012001516125ce83611d7d565b836080015161014001516125e291906130a7565b611daa91906130c6565b60008183116125b057816125b2565b6000612650826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126cd9092919063ffffffff16565b80519091501561259c578080602001905181019061266e9190613114565b61259c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105f0565b60606126dc84846000856126e4565b949350505050565b6060824710156127455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105f0565b600080866001600160a01b031685876040516127619190613136565b60006040518083038185875af1925050503d806000811461279e576040519150601f19603f3d011682016040523d82523d6000602084013e6127a3565b606091505b50915091506127b4878383876127bf565b979650505050505050565b6060831561282e578251600003612827576001600160a01b0385163b6128275760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105f0565b50816126dc565b6126dc83838151156128435781518083602001fd5b8060405162461bcd60e51b81526004016105f09190613152565b6040805160c08082018352600080835260208084018290528385018290526060808501839052855161016081018752838152918201839052948101829052938401819052608084810182905260a0850182905291840181905260e084018190526101008401819052610120840181905261014084015290919082019081526020016128e66128eb565b905290565b6040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b80356001600160a01b038116811461295057600080fd5b919050565b60006020828403121561296757600080fd5b6125b282612939565b6020808252825182820181905260009190848201906040850190845b818110156129b15783516001600160401b03168352928401929184019160010161298c565b50909695505050505050565b6000602082840312156129cf57600080fd5b5035919050565b805163ffffffff16825260208101516129f7602084018263ffffffff169052565b506040810151612a0f604084018263ffffffff169052565b506060810151612a27606084018263ffffffff169052565b506080810151612a4260808401826001600160a01b03169052565b5060a0810151612a5d60a08401826001600160a01b03169052565b5060c0810151612a7860c08401826001600160a01b03169052565b5060e0810151612a9360e08401826001600160a01b03169052565b506101008181015190830152610120808201519083015261014090810151910152565b60005b83811015612ad1578181015183820152602001612ab9565b50506000910152565b60008151808452612af2816020860160208601612ab6565b601f01601f19169290920160200192915050565b63ffffffff81511682526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a08501526126dc60c0850182612ada565b6001600160401b038716815263ffffffff868116602083015285166040820152606081018490526000610200612b9a60808401866129d6565b806101e08401526111f681840185612b06565b60008060408385031215612bc057600080fd5b612bc983612939565b946020939093013593505050565b80356001600160401b038116811461295057600080fd5b600060208284031215612c0057600080fd5b6125b282612bd7565b803563ffffffff8116811461295057600080fd5b60008060008060008060008060006101208a8c031215612c3c57600080fd5b612c458a612939565b9850612c5360208b01612939565b9750612c6160408b01612939565b965060608a0135955060808a0135945060a08a01359350612c8460c08b01612c09565b9250612c9260e08b01612c09565b9150612ca16101008b01612c09565b90509295985092959850929598565b602081526001600160401b0382511660208201526000602083015163ffffffff80821660408501528060408601511660608501525050606083015160808301526080830151612d0260a08401826129d6565b5060a0830151610200838101526126dc610220840182612b06565b60008060008060008060a08789031215612d3657600080fd5b612d3f87612bd7565b9550612d4d60208801612939565b945060408701359350612d6260608801612c09565b925060808701356001600160401b0380821115612d7e57600080fd5b818901915089601f830112612d9257600080fd5b813581811115612da157600080fd5b8a6020828501011115612db357600080fd5b6020830194508093505050509295509295509295565b600181811c90821680612ddd57607f821691505b602082108103612dfd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b601f82111561259c57600081815260208120601f850160051c81016020861015612e565750805b601f850160051c820191505b8181101561196257828155600101612e62565b81516001600160401b03811115612e8e57612e8e612e19565b612ea281612e9c8454612dc9565b84612e2f565b602080601f831160018114612ed75760008415612ebf5750858301515b600019600386901b1c1916600185901b178555611962565b600085815260208120601f198616915b82811015612f0657888601518255948401946001909101908401612ee7565b5085821015612f245787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6101608101611daa82846129d6565b60208082526006908201526573746174757360d01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff818116838216019080821115612f9657612f96612f63565b5092915050565b600060208284031215612faf57600080fd5b5051919050565b63ffffffff831681526040602082015260006126dc6040830184612b06565b80820180821115611daa57611daa612f63565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906127b490830184612ada565b81810381811115611daa57611daa612f63565b60208082526004908201526374696d6560e01b604082015260600190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60008160001904831182151516156130c1576130c1612f63565b500290565b6000826130e357634e487b7160e01b600052601260045260246000fd5b500490565b600063ffffffff8083168185168183048111821515161561310b5761310b612f63565b02949350505050565b60006020828403121561312657600080fd5b815180151581146125b257600080fd5b60008251613148818460208701612ab6565b9190910192915050565b6020815260006125b26020830184612ada56fea2646970667358221220cd9c3d9b2965f8ccd9f6053702eb06d87a24eeba69cc6911a3ab7a5dd8ceb63c64736f6c63430008100033",
846
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806356f65bee116100a257806385e471d51161007157806385e471d514610225578063a0b94e0b14610238578063a3d890b614610258578063f58e65b814610262578063ffa1ad741461027557600080fd5b806356f65bee146101f85780636352c26214610200578063724f27ee14610213578063805d835d1461021b57600080fd5b80633ab22f01116100e95780633ab22f01146101a257806342d21ef7146101b5578063454b1580146101c85780634c125e79146101d057806352e8b288146101e557600080fd5b80630392c34a1461011b5780631116fd0414610144578063112017a7146101695780631f7b6d3214610186575b600080fd5b61012e610129366004612955565b61028f565b60405161013b9190612970565b60405180910390f35b6101576101523660046129bd565b61032d565b60405161013b96959493929190612b61565b610171600a81565b60405163ffffffff909116815260200161013b565b6001545b6040516001600160401b03909116815260200161013b565b61018a6101b0366004612bad565b610508565b6101716101c33660046129bd565b610554565b610171600581565b6101e36101de366004612bee565b61058e565b005b6101e36101f3366004612bee565b6108b2565b610171600181565b61018a61020e366004612c1d565b610c1e565b610171600281565b610171620186a081565b6101e3610233366004612bee565b611203565b61024b610246366004612bee565b6113df565b60405161013b9190612cb0565b61017162018a8881565b6101e3610270366004612d1d565b61163c565b61027d600281565b60405160ff909116815260200161013b565b6001600160a01b03811660009081526003602090815260409182902080548351818402810184019094528084526060939283018282801561032157602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116102de5790505b50505050509050919050565b6001818154811061033d57600080fd5b6000918252602091829020600f90910201805460018201546040805161016081018252600285015463ffffffff81811683526401000000008083048216848a0152600160401b808404831685870152600160601b93849004831660608087019190915260038a01546001600160a01b0390811660808089019190915260048c0154821660a0808a019190915260058d0154831660c0808b019190915260068e0154841660e08b015260078e01546101008b015260088e01546101208b015260098e01546101408b01528a519081018b52600a8e018054808a1683529790970484169e81019e909e52600b8d0154909216988d0198909852600c8b0154918c0191909152600d8a0154968b0196909652600e890180546001600160401b038a169c5091890484169a949098049092169795969395949293909284019161048190612dc9565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad90612dc9565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b505050505081525050905086565b6003602052816000526040600020818154811061052457600080fd5b9060005260206000209060049182820401919006600802915091509054906101000a90046001600160401b031681565b6002818154811061056457600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b61059661196a565b60006105a1826113df565b90508060800151608001516001600160a01b0316336001600160a01b0316146105f95760405162461bcd60e51b815260206004820152600560248201526436b0b5b2b960d91b60448201526064015b60405180910390fd5b60016002836001600160401b03168154811061061757610617612e03565b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055506001816020019063ffffffff16908163ffffffff1681525050806001836001600160401b03168154811061068057610680612e03565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e84019061084c9082612e75565b505050608080840151015183516040513381526001600160a01b0390921693506001600160401b031691507f84433a3c591ac98de0b89e7fc7a3d5d6705a3cbec760e7d529439c65d6feb3099060200160405180910390a3506108af6001600055565b50565b6108ba61196a565b60006108c5826113df565b90506000806000806108d6856119c3565b929650909450925090506108ea8584611d25565b60808581015181015160608088015160408051338152602081018990528082018890529283018690529382015291516001600160a01b03878116939216916001600160401b038a16917fc7529bc0224b03ba593d84e2064baeac956a4221ca93d37af0f1810ad17df7a99181900360a00190a461096685611d7d565b600003610a2057600280876001600160401b03168154811061098a5761098a612e03565b60009182526020918290206008820401805460079092166004026101000a63ffffffff81810219909316949092169190910292909217909155600286820152608080870151015186516040513381526001600160a01b03888116949316926001600160401b03909216917fd08d3326dcd14f1021feb19d05834c4f6d0b7ff1fecac35981f24fd5f73873c5910160405180910390a45b846001876001600160401b031681548110610a3d57610a3d612e03565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e840190610c099082612e75565b50505090505050505050506108af6001600055565b6000610c2861196a565b6001600160a01b03891615801590610c4857506001600160a01b03881615155b8015610c665750876001600160a01b0316896001600160a01b031614155b8015610c725750600087115b8015610c7e5750600086115b8015610c8a5750868611155b8015610c965750600085115b8015610ca75750428463ffffffff16115b8015610cba5750600a63ffffffff841610155b610cef5760405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b60448201526064016105f0565b6000610d0b610cfd60015490565b8686868f8f8f8f8f8f611db0565b9050610d1681611f9f565b60018054808201825560009190915281517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6600f90920291820180546020808601516040808801516001600160401b039096166001600160601b031990941693909317600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b97841688021786556060808a01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf78a01556080808b015180517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf88c018054838a0151848c015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a1690980290961695909517908716909a0299909917909255878201517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf98a0180546001600160a01b03199081166001600160a01b039384161790915560a0808b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa8d018054841691851691909117905560c08b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfb8d018054841691851691909117905560e08b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfc8d01805484169185169190911790556101008b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfd8d01556101208b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfe8d0155610140909a01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cff8c0155898c015180517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d008d01805499830151919098166001600160c01b031990991698909817978316909502969096178555958301517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d018a018054909616961695909517909355928301517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d02870155908201517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d03860155928101518594929391927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d0401906110be9082612e75565b505050505060028590806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908363ffffffff16021790555060036000336001600160a01b03166001600160a01b03168152602001908152602001600020816000015190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a8154816001600160401b0302191690836001600160401b031602179055508a6001600160a01b0316336001600160a01b031682600001516001600160401b03167f831701c9313a778469897164a19ddd1867959a91eada7cc21adf0936761c837084608001516040516111e19190612f34565b60405180910390a45190506111f66001600055565b9998505050505050505050565b61120b61196a565b6000611216826113df565b9050806020015163ffffffff1642106112415760405162461bcd60e51b81526004016105f090612f43565b80608001516060015181604001516112599190612f79565b63ffffffff16421161129a5760405162461bcd60e51b815260206004820152600a60248201526966696c6c2064656c617960b01b60448201526064016105f0565b6112a381611d7d565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b03918216600482015230602482015291169063dd62ed3e90604401602060405180830381865afa1580156112fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113219190612f9d565b10806113ab575061133181611d7d565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190612f9d565b105b6105f95760405162461bcd60e51b81526020600482015260056024820152641d985b1a5960da1b60448201526064016105f0565b6113e761285d565b6001546001600160401b0316826001600160401b0316106114375760405162461bcd60e51b815260206004820152600a6024820152691a5b9d985b1a59081a5960b21b60448201526064016105f0565b6001826001600160401b03168154811061145357611453612e03565b60009182526020918290206040805160c08082018352600f90940290920180546001600160401b038116845263ffffffff600160401b808304821686890152600160601b928390048216868601526001840154606080880191909152855161016081018752600286015480851682526401000000008082048616838d01529381048516828901529490940483168482015260038501546001600160a01b039081166080868101919091526004870154821660a08088019190915260058801548316878c01526006880154831660e0880152600788015461010088015260088801546101208801526009880154610140880152818a01969096528751998a018852600a870180549586168b5293909404811699890199909952600b85015490981694870194909452600c83015496860196909652600d82015495850195909552600e810180549395919482870194909392840191906115b090612dc9565b80601f01602080910402602001604051908101604052809291908181526020018280546115dc90612dc9565b80156116295780601f106115fe57610100808354040283529160200191611629565b820191906000526020600020905b81548152906001019060200180831161160c57829003601f168201915b5050509190925250505090525092915050565b61164461196a565b6001600160a01b038516158015906116645750620186a063ffffffff8416105b6116995760405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b60448201526064016105f0565b60006116a4876113df565b905060006116b6828888888888612125565b905061170087828887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089969594939250506123c49050565b816001896001600160401b03168154811061171d5761171d612e03565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e8401906118e99082612e75565b505050905050866001600160a01b03168260800151608001516001600160a01b031683600001516001600160401b03167fc6c7dd24446d66051e106d8289c1e1e3657b16ae283f4824b89417b1ec39664f888660a0015160405161194e929190612fb6565b60405180910390a450506119626001600055565b505050505050565b6002600054036119bc5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105f0565b6002600055565b6000806000808460a00151602001516001600160a01b0316336001600160a01b031614611a1a5760405162461bcd60e51b81526020600482015260056024820152643a30b5b2b960d91b60448201526064016105f0565b846020015163ffffffff164210611a435760405162461bcd60e51b81526004016105f090612f43565b60808501516040015160a086015151611a5c9190612f79565b63ffffffff164211611a9c5760405162461bcd60e51b81526020600482015260096024820152686269642064656c617960b81b60448201526064016105f0565b5060a08401516040810151608090910151909350611ab985611d7d565b92506000611ac68661242d565b6080808801519081015160c090910151919250611aee916001600160a01b0316903087612449565b608086015160c001516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b609190612f9d565b608087015160c00151909450611b80906001600160a01b031686866124ba565b608086015160c081015160e0909101516001600160a01b03871691632506c0189187611bac8787612fd5565b8b60a0015160a001516040518663ffffffff1660e01b8152600401611bd5959493929190612fe8565b600060405180830381600087803b158015611bef57600080fd5b505af1158015611c03573d6000803e3d6000fd5b505050608087015160e001516040516370a0823160e01b81523060048201526001600160a01b0390911691506370a0823190602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c799190612f9d565b9250611c858284613022565b925080831015611cc15760405162461bcd60e51b81526020600482015260076024820152661b5a5b881bdd5d60ca1b60448201526064016105f0565b611cef8660a001516020015183886080015160e001516001600160a01b031661256c9092919063ffffffff16565b611d1d86608001516080015184886080015160e001516001600160a01b031661256c9092919063ffffffff16565b509193509193565b63ffffffff4210611d485760405162461bcd60e51b81526004016105f090613035565b8160a001611d546128eb565b905263ffffffff42166040830152606082018051829190611d76908390612fd5565b9052505050565b6000611daa82608001516101200151836060015184608001516101000151611da59190613022565b6125a1565b92915050565b611db861285d565b63ffffffff4210611ddb5760405162461bcd60e51b81526004016105f090613035565b63ffffffff8a8116108015611df5575063ffffffff898116105b8015611e06575063ffffffff888116105b611e3b5760405162461bcd60e51b81526020600482015260066024820152653ab4b73a199960d11b60448201526064016105f0565b6040518060c001604052808c6001600160401b031681526020018b63ffffffff168152602001600063ffffffff168152602001600081526020016040518061016001604052804263ffffffff1681526020018d63ffffffff1681526020018c63ffffffff1681526020018b63ffffffff168152602001336001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b03168152602001886001600160a01b031681526020018781526020018681526020018581525081526020016040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160401b03811115611f6157611f61612e19565b6040519080825280601f01601f191660200182016040528015611f8b576020820181803683370190505b50905290529b9a5050505050505050505050565b611fa881611d7d565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b03918216600482015230602482015291169063dd62ed3e90604401602060405180830381865afa158015612002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120269190612f9d565b10156120665760405162461bcd60e51b815260206004820152600f60248201526e6d616b657220616c6c6f77616e636560881b60448201526064016105f0565b61206f81611d7d565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa1580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e79190612f9d565b10156108af5760405162461bcd60e51b815260206004820152600d60248201526c6d616b65722062616c616e636560981b60448201526064016105f0565b6000866020015163ffffffff1642106121505760405162461bcd60e51b81526004016105f090612f43565b86608001516060015187604001516121689190612f79565b63ffffffff1642116121a95760405162461bcd60e51b815260206004820152600a60248201526966696c6c2064656c617960b01b60448201526064016105f0565b608087015160a001516001600160a01b031615806121e05750856001600160a01b0316876080015160a001516001600160a01b0316145b6122175760405162461bcd60e51b815260206004820152600860248201526765786368616e676560c01b60448201526064016105f0565b856001600160a01b031663650967b5886080015160c00151896080015160e001516122418b611d7d565b87876040518663ffffffff1660e01b8152600401612263959493929190613053565b602060405180830381865afa158015612280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a49190612f9d565b9050620186a06122ba63ffffffff8616836130a7565b6122c491906130c6565b6122ce9082613022565b90506122da8582613022565b60a088015160600151909150620186a0906122f99062018a88906130a7565b61230391906130c6565b8111806123395750600587608001516040015161232091906130e8565b60a0880151516123309190612f79565b63ffffffff1642115b61236f5760405162461bcd60e51b81526020600482015260076024820152661b1bddc8189a5960ca1b60448201526064016105f0565b612378876125b9565b8110156123b15760405162461bcd60e51b81526020600482015260076024820152661b5a5b881bdd5d60ca1b60448201526064016105f0565b6123ba87611f9f565b9695505050505050565b63ffffffff42106123e75760405162461bcd60e51b81526004016105f090613035565b6040805160c08101825263ffffffff421681523360208201526001600160a01b0395909516908501526060840192909252608083015260a0808301919091529190910152565b6000611daa8260a0015160600151612444846125b9565b6125ec565b6040516001600160a01b03808516602483015283166044820152606481018290526124b49085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125fb565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f9190612f9d565b6125399190612fd5565b6040516001600160a01b0385166024820152604481018290529091506124b490859063095ea7b360e01b9060640161247d565b6040516001600160a01b03831660248201526044810182905261259c90849063a9059cbb60e01b9060640161247d565b505050565b60008183106125b057816125b2565b825b9392505050565b6000816080015161012001516125ce83611d7d565b836080015161014001516125e291906130a7565b611daa91906130c6565b60008183116125b057816125b2565b6000612650826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126cd9092919063ffffffff16565b80519091501561259c578080602001905181019061266e9190613114565b61259c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105f0565b60606126dc84846000856126e4565b949350505050565b6060824710156127455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105f0565b600080866001600160a01b031685876040516127619190613136565b60006040518083038185875af1925050503d806000811461279e576040519150601f19603f3d011682016040523d82523d6000602084013e6127a3565b606091505b50915091506127b4878383876127bf565b979650505050505050565b6060831561282e578251600003612827576001600160a01b0385163b6128275760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105f0565b50816126dc565b6126dc83838151156128435781518083602001fd5b8060405162461bcd60e51b81526004016105f09190613152565b6040805160c08082018352600080835260208084018290528385018290526060808501839052855161016081018752838152918201839052948101829052938401819052608084810182905260a0850182905291840181905260e084018190526101008401819052610120840181905261014084015290919082019081526020016128e66128eb565b905290565b6040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b80356001600160a01b038116811461295057600080fd5b919050565b60006020828403121561296757600080fd5b6125b282612939565b6020808252825182820181905260009190848201906040850190845b818110156129b15783516001600160401b03168352928401929184019160010161298c565b50909695505050505050565b6000602082840312156129cf57600080fd5b5035919050565b805163ffffffff16825260208101516129f7602084018263ffffffff169052565b506040810151612a0f604084018263ffffffff169052565b506060810151612a27606084018263ffffffff169052565b506080810151612a4260808401826001600160a01b03169052565b5060a0810151612a5d60a08401826001600160a01b03169052565b5060c0810151612a7860c08401826001600160a01b03169052565b5060e0810151612a9360e08401826001600160a01b03169052565b506101008181015190830152610120808201519083015261014090810151910152565b60005b83811015612ad1578181015183820152602001612ab9565b50506000910152565b60008151808452612af2816020860160208601612ab6565b601f01601f19169290920160200192915050565b63ffffffff81511682526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a08501526126dc60c0850182612ada565b6001600160401b038716815263ffffffff868116602083015285166040820152606081018490526000610200612b9a60808401866129d6565b806101e08401526111f681840185612b06565b60008060408385031215612bc057600080fd5b612bc983612939565b946020939093013593505050565b80356001600160401b038116811461295057600080fd5b600060208284031215612c0057600080fd5b6125b282612bd7565b803563ffffffff8116811461295057600080fd5b60008060008060008060008060006101208a8c031215612c3c57600080fd5b612c458a612939565b9850612c5360208b01612939565b9750612c6160408b01612939565b965060608a0135955060808a0135945060a08a01359350612c8460c08b01612c09565b9250612c9260e08b01612c09565b9150612ca16101008b01612c09565b90509295985092959850929598565b602081526001600160401b0382511660208201526000602083015163ffffffff80821660408501528060408601511660608501525050606083015160808301526080830151612d0260a08401826129d6565b5060a0830151610200838101526126dc610220840182612b06565b60008060008060008060a08789031215612d3657600080fd5b612d3f87612bd7565b9550612d4d60208801612939565b945060408701359350612d6260608801612c09565b925060808701356001600160401b0380821115612d7e57600080fd5b818901915089601f830112612d9257600080fd5b813581811115612da157600080fd5b8a6020828501011115612db357600080fd5b6020830194508093505050509295509295509295565b600181811c90821680612ddd57607f821691505b602082108103612dfd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b601f82111561259c57600081815260208120601f850160051c81016020861015612e565750805b601f850160051c820191505b8181101561196257828155600101612e62565b81516001600160401b03811115612e8e57612e8e612e19565b612ea281612e9c8454612dc9565b84612e2f565b602080601f831160018114612ed75760008415612ebf5750858301515b600019600386901b1c1916600185901b178555611962565b600085815260208120601f198616915b82811015612f0657888601518255948401946001909101908401612ee7565b5085821015612f245787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6101608101611daa82846129d6565b60208082526006908201526573746174757360d01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff818116838216019080821115612f9657612f96612f63565b5092915050565b600060208284031215612faf57600080fd5b5051919050565b63ffffffff831681526040602082015260006126dc6040830184612b06565b80820180821115611daa57611daa612f63565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906127b490830184612ada565b81810381811115611daa57611daa612f63565b60208082526004908201526374696d6560e01b604082015260600190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60008160001904831182151516156130c1576130c1612f63565b500290565b6000826130e357634e487b7160e01b600052601260045260246000fd5b500490565b600063ffffffff8083168185168183048111821515161561310b5761310b612f63565b02949350505050565b60006020828403121561312657600080fd5b815180151581146125b257600080fd5b60008251613148818460208701612ab6565b9190910192915050565b6020815260006125b26020830184612ada56fea2646970667358221220cd9c3d9b2965f8ccd9f6053702eb06d87a24eeba69cc6911a3ab7a5dd8ceb63c64736f6c63430008100033",
869
+ "bytecode": "0x60a06040523480156200001157600080fd5b506040516200338f3803806200338f83398101604081905262000034916200004b565b60016000556001600160a01b03166080526200007d565b6000602082840312156200005e57600080fd5b81516001600160a01b03811681146200007657600080fd5b9392505050565b6080516132e1620000ae6000396000818161027201528181610ca501528181611cb8015261268d01526132e16000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806356f65bee116100ad578063a0b94e0b11610071578063a0b94e0b14610243578063a3d890b614610263578063c11a463d1461026d578063f58e65b8146102ac578063ffa1ad74146102bf57600080fd5b806356f65bee146102035780636352c2621461020b578063724f27ee1461021e578063805d835d1461022657806385e471d51461023057600080fd5b80633ab22f01116100f45780633ab22f01146101ad57806342d21ef7146101c0578063454b1580146101d35780634c125e79146101db57806352e8b288146101f057600080fd5b80630392c34a146101265780631116fd041461014f578063112017a7146101745780631f7b6d3214610191575b600080fd5b610139610134366004612a9b565b6102d9565b6040516101469190612ab6565b60405180910390f35b61016261015d366004612b03565b610377565b60405161014696959493929190612ca7565b61017c600a81565b60405163ffffffff9091168152602001610146565b6001545b6040516001600160401b039091168152602001610146565b6101956101bb366004612cf3565b610552565b61017c6101ce366004612b03565b61059e565b61017c600581565b6101ee6101e9366004612d34565b6105d8565b005b6101ee6101fe366004612d34565b6108fc565b61017c600181565b610195610219366004612d63565b610c68565b61017c600281565b61017c620186a081565b6101ee61023e366004612d34565b611289565b610256610251366004612d34565b611465565b6040516101469190612df6565b61017c62018a8881565b6102947f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610146565b6101ee6102ba366004612e63565b6116c2565b6102c7600381565b60405160ff9091168152602001610146565b6001600160a01b03811660009081526003602090815260409182902080548351818402810184019094528084526060939283018282801561036b57602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116103285790505b50505050509050919050565b6001818154811061038757600080fd5b6000918252602091829020600f90910201805460018201546040805161016081018252600285015463ffffffff81811683526401000000008083048216848a0152600160401b808404831685870152600160601b93849004831660608087019190915260038a01546001600160a01b0390811660808089019190915260048c0154821660a0808a019190915260058d0154831660c0808b019190915260068e0154841660e08b015260078e01546101008b015260088e01546101208b015260098e01546101408b01528a519081018b52600a8e018054808a1683529790970484169e81019e909e52600b8d0154909216988d0198909852600c8b0154918c0191909152600d8a0154968b0196909652600e890180546001600160401b038a169c5091890484169a94909804909216979596939594929390928401916104cb90612f0f565b80601f01602080910402602001604051908101604052809291908181526020018280546104f790612f0f565b80156105445780601f1061051957610100808354040283529160200191610544565b820191906000526020600020905b81548152906001019060200180831161052757829003601f168201915b505050505081525050905086565b6003602052816000526040600020818154811061056e57600080fd5b9060005260206000209060049182820401919006600802915091509054906101000a90046001600160401b031681565b600281815481106105ae57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6105e06119f0565b60006105eb82611465565b90508060800151608001516001600160a01b0316336001600160a01b0316146106435760405162461bcd60e51b815260206004820152600560248201526436b0b5b2b960d91b60448201526064015b60405180910390fd5b60016002836001600160401b03168154811061066157610661612f49565b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055506001816020019063ffffffff16908163ffffffff1681525050806001836001600160401b0316815481106106ca576106ca612f49565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e8401906108969082612fbb565b505050608080840151015183516040513381526001600160a01b0390921693506001600160401b031691507f84433a3c591ac98de0b89e7fc7a3d5d6705a3cbec760e7d529439c65d6feb3099060200160405180910390a3506108f96001600055565b50565b6109046119f0565b600061090f82611465565b905060008060008061092085611a49565b929650909450925090506109348584611e1c565b60808581015181015160608088015160408051338152602081018990528082018890529283018690529382015291516001600160a01b03878116939216916001600160401b038a16917fc7529bc0224b03ba593d84e2064baeac956a4221ca93d37af0f1810ad17df7a99181900360a00190a46109b085611e74565b600003610a6a57600280876001600160401b0316815481106109d4576109d4612f49565b60009182526020918290206008820401805460079092166004026101000a63ffffffff81810219909316949092169190910292909217909155600286820152608080870151015186516040513381526001600160a01b03888116949316926001600160401b03909216917fd08d3326dcd14f1021feb19d05834c4f6d0b7ff1fecac35981f24fd5f73873c5910160405180910390a45b846001876001600160401b031681548110610a8757610a87612f49565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e840190610c539082612fbb565b50505090505050505050506108f96001600055565b6000610c726119f0565b6001600160a01b03891615801590610c9c5750876001600160a01b0316896001600160a01b031614155b8015610cec57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b0316141580610cec57506001600160a01b03881615155b8015610cf85750600087115b8015610d045750600086115b8015610d105750868611155b8015610d1c5750600085115b8015610d2d5750428463ffffffff16115b8015610d405750600a63ffffffff841610155b610d755760405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b604482015260640161063a565b6000610d91610d8360015490565b8686868f8f8f8f8f8f611ea7565b9050610d9c81612096565b60018054808201825560009190915281517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6600f90920291820180546020808601516040808801516001600160401b039096166001600160601b031990941693909317600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b97841688021786556060808a01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf78a01556080808b015180517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf88c018054838a0151848c015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a1690980290961695909517908716909a0299909917909255878201517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf98a0180546001600160a01b03199081166001600160a01b039384161790915560a0808b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa8d018054841691851691909117905560c08b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfb8d018054841691851691909117905560e08b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfc8d01805484169185169190911790556101008b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfd8d01556101208b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfe8d0155610140909a01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cff8c0155898c015180517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d008d01805499830151919098166001600160c01b031990991698909817978316909502969096178555958301517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d018a018054909616961695909517909355928301517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d02870155908201517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d03860155928101518594929391927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d0401906111449082612fbb565b505050505060028590806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908363ffffffff16021790555060036000336001600160a01b03166001600160a01b03168152602001908152602001600020816000015190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a8154816001600160401b0302191690836001600160401b031602179055508a6001600160a01b0316336001600160a01b031682600001516001600160401b03167f831701c9313a778469897164a19ddd1867959a91eada7cc21adf0936761c83708460800151604051611267919061307a565b60405180910390a451905061127c6001600055565b9998505050505050505050565b6112916119f0565b600061129c82611465565b9050806020015163ffffffff1642106112c75760405162461bcd60e51b815260040161063a90613089565b80608001516060015181604001516112df91906130bf565b63ffffffff1642116113205760405162461bcd60e51b815260206004820152600a60248201526966696c6c2064656c617960b01b604482015260640161063a565b61132981611e74565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b03918216600482015230602482015291169063dd62ed3e90604401602060405180830381865afa158015611383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a791906130e3565b108061143157506113b781611e74565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801561140b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142f91906130e3565b105b6106435760405162461bcd60e51b81526020600482015260056024820152641d985b1a5960da1b604482015260640161063a565b61146d6129a3565b6001546001600160401b0316826001600160401b0316106114bd5760405162461bcd60e51b815260206004820152600a6024820152691a5b9d985b1a59081a5960b21b604482015260640161063a565b6001826001600160401b0316815481106114d9576114d9612f49565b60009182526020918290206040805160c08082018352600f90940290920180546001600160401b038116845263ffffffff600160401b808304821686890152600160601b928390048216868601526001840154606080880191909152855161016081018752600286015480851682526401000000008082048616838d01529381048516828901529490940483168482015260038501546001600160a01b039081166080868101919091526004870154821660a08088019190915260058801548316878c01526006880154831660e0880152600788015461010088015260088801546101208801526009880154610140880152818a01969096528751998a018852600a870180549586168b5293909404811699890199909952600b85015490981694870194909452600c83015496860196909652600d82015495850195909552600e8101805493959194828701949093928401919061163690612f0f565b80601f016020809104026020016040519081016040528092919081815260200182805461166290612f0f565b80156116af5780601f10611684576101008083540402835291602001916116af565b820191906000526020600020905b81548152906001019060200180831161169257829003601f168201915b5050509190925250505090525092915050565b6116ca6119f0565b6001600160a01b038516158015906116ea5750620186a063ffffffff8416105b61171f5760405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b604482015260640161063a565b600061172a87611465565b9050600061173c82888888888861221c565b905061178687828887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089969594939250506124bb9050565b816001896001600160401b0316815481106117a3576117a3612f49565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e84019061196f9082612fbb565b505050905050866001600160a01b03168260800151608001516001600160a01b031683600001516001600160401b03167fc6c7dd24446d66051e106d8289c1e1e3657b16ae283f4824b89417b1ec39664f888660a001516040516119d49291906130fc565b60405180910390a450506119e86001600055565b505050505050565b600260005403611a425760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161063a565b6002600055565b6000806000808460a00151602001516001600160a01b0316336001600160a01b031614611aa05760405162461bcd60e51b81526020600482015260056024820152643a30b5b2b960d91b604482015260640161063a565b846020015163ffffffff164210611ac95760405162461bcd60e51b815260040161063a90613089565b60808501516040015160a086015151611ae291906130bf565b63ffffffff164211611b225760405162461bcd60e51b81526020600482015260096024820152686269642064656c617960b81b604482015260640161063a565b5060a08401516040810151608090910151909350611b3f85611e74565b92506000611b4c86612524565b6080808801519081015160c090910151919250611b74916001600160a01b0316903087612540565b608086015160c001516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be691906130e3565b608087015160c00151909450611c06906001600160a01b031686866125b1565b846001600160a01b0316632506c018876080015160c00151611c2789612663565b87611c32878761311b565b8b60a0015160a001516040518663ffffffff1660e01b8152600401611c5b95949392919061312e565b600060405180830381600087803b158015611c7557600080fd5b505af1158015611c89573d6000803e3d6000fd5b50505050608086015160e001516001600160a01b0316611d1d57604051632e1a7d4d60e01b81524760048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015611d0457600080fd5b505af1158015611d18573d6000803e3d6000fd5b505050505b611d2686612663565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611d6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9091906130e3565b9250611d9c8284613168565b925080831015611dd85760405162461bcd60e51b81526020600482015260076024820152661b5a5b881bdd5d60ca1b604482015260640161063a565b611dfe8660a001516020015183611dee89612663565b6001600160a01b031691906126b2565b611e1486608001516080015184611dee89612663565b509193509193565b63ffffffff4210611e3f5760405162461bcd60e51b815260040161063a9061317b565b8160a001611e4b612a31565b905263ffffffff42166040830152606082018051829190611e6d90839061311b565b9052505050565b6000611ea182608001516101200151836060015184608001516101000151611e9c9190613168565b6126e7565b92915050565b611eaf6129a3565b63ffffffff4210611ed25760405162461bcd60e51b815260040161063a9061317b565b63ffffffff8a8116108015611eec575063ffffffff898116105b8015611efd575063ffffffff888116105b611f325760405162461bcd60e51b81526020600482015260066024820152653ab4b73a199960d11b604482015260640161063a565b6040518060c001604052808c6001600160401b031681526020018b63ffffffff168152602001600063ffffffff168152602001600081526020016040518061016001604052804263ffffffff1681526020018d63ffffffff1681526020018c63ffffffff1681526020018b63ffffffff168152602001336001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b03168152602001886001600160a01b031681526020018781526020018681526020018581525081526020016040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160401b0381111561205857612058612f5f565b6040519080825280601f01601f191660200182016040528015612082576020820181803683370190505b50905290529b9a5050505050505050505050565b61209f81611e74565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b03918216600482015230602482015291169063dd62ed3e90604401602060405180830381865afa1580156120f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211d91906130e3565b101561215d5760405162461bcd60e51b815260206004820152600f60248201526e6d616b657220616c6c6f77616e636560881b604482015260640161063a565b61216681611e74565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa1580156121ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121de91906130e3565b10156108f95760405162461bcd60e51b815260206004820152600d60248201526c6d616b65722062616c616e636560981b604482015260640161063a565b6000866020015163ffffffff1642106122475760405162461bcd60e51b815260040161063a90613089565b866080015160600151876040015161225f91906130bf565b63ffffffff1642116122a05760405162461bcd60e51b815260206004820152600a60248201526966696c6c2064656c617960b01b604482015260640161063a565b608087015160a001516001600160a01b031615806122d75750856001600160a01b0316876080015160a001516001600160a01b0316145b61230e5760405162461bcd60e51b815260206004820152600860248201526765786368616e676560c01b604482015260640161063a565b856001600160a01b031663650967b5886080015160c0015161232f8a612663565b6123388b611e74565b87876040518663ffffffff1660e01b815260040161235a959493929190613199565b602060405180830381865afa158015612377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239b91906130e3565b9050620186a06123b163ffffffff8616836131ed565b6123bb919061320c565b6123c59082613168565b90506123d18582613168565b60a088015160600151909150620186a0906123f09062018a88906131ed565b6123fa919061320c565b81118061243057506005876080015160400151612417919061322e565b60a08801515161242791906130bf565b63ffffffff1642115b6124665760405162461bcd60e51b81526020600482015260076024820152661b1bddc8189a5960ca1b604482015260640161063a565b61246f876126ff565b8110156124a85760405162461bcd60e51b81526020600482015260076024820152661b5a5b881bdd5d60ca1b604482015260640161063a565b6124b187612096565b9695505050505050565b63ffffffff42106124de5760405162461bcd60e51b815260040161063a9061317b565b6040805160c08101825263ffffffff421681523360208201526001600160a01b0395909516908501526060840192909252608083015260a0808301919091529190910152565b6000611ea18260a001516060015161253b846126ff565b612732565b6040516001600160a01b03808516602483015283166044820152606481018290526125ab9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612741565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262691906130e3565b612630919061311b565b6040516001600160a01b0385166024820152604481018290529091506125ab90859063095ea7b360e01b90606401612574565b608081015160e001516000906001600160a01b03161561268b57816080015160e00151611ea1565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b6040516001600160a01b0383166024820152604481018290526126e290849063a9059cbb60e01b90606401612574565b505050565b60008183106126f657816126f8565b825b9392505050565b60008160800151610120015161271483611e74565b8360800151610140015161272891906131ed565b611ea1919061320c565b60008183116126f657816126f8565b6000612796826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128139092919063ffffffff16565b8051909150156126e257808060200190518101906127b4919061325a565b6126e25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161063a565b6060612822848460008561282a565b949350505050565b60608247101561288b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161063a565b600080866001600160a01b031685876040516128a7919061327c565b60006040518083038185875af1925050503d80600081146128e4576040519150601f19603f3d011682016040523d82523d6000602084013e6128e9565b606091505b50915091506128fa87838387612905565b979650505050505050565b6060831561297457825160000361296d576001600160a01b0385163b61296d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161063a565b5081612822565b61282283838151156129895781518083602001fd5b8060405162461bcd60e51b815260040161063a9190613298565b6040805160c08082018352600080835260208084018290528385018290526060808501839052855161016081018752838152918201839052948101829052938401819052608084810182905260a0850182905291840181905260e08401819052610100840181905261012084018190526101408401529091908201908152602001612a2c612a31565b905290565b6040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b80356001600160a01b0381168114612a9657600080fd5b919050565b600060208284031215612aad57600080fd5b6126f882612a7f565b6020808252825182820181905260009190848201906040850190845b81811015612af75783516001600160401b031683529284019291840191600101612ad2565b50909695505050505050565b600060208284031215612b1557600080fd5b5035919050565b805163ffffffff1682526020810151612b3d602084018263ffffffff169052565b506040810151612b55604084018263ffffffff169052565b506060810151612b6d606084018263ffffffff169052565b506080810151612b8860808401826001600160a01b03169052565b5060a0810151612ba360a08401826001600160a01b03169052565b5060c0810151612bbe60c08401826001600160a01b03169052565b5060e0810151612bd960e08401826001600160a01b03169052565b506101008181015190830152610120808201519083015261014090810151910152565b60005b83811015612c17578181015183820152602001612bff565b50506000910152565b60008151808452612c38816020860160208601612bfc565b601f01601f19169290920160200192915050565b63ffffffff81511682526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a085015261282260c0850182612c20565b6001600160401b038716815263ffffffff868116602083015285166040820152606081018490526000610200612ce06080840186612b1c565b806101e084015261127c81840185612c4c565b60008060408385031215612d0657600080fd5b612d0f83612a7f565b946020939093013593505050565b80356001600160401b0381168114612a9657600080fd5b600060208284031215612d4657600080fd5b6126f882612d1d565b803563ffffffff81168114612a9657600080fd5b60008060008060008060008060006101208a8c031215612d8257600080fd5b612d8b8a612a7f565b9850612d9960208b01612a7f565b9750612da760408b01612a7f565b965060608a0135955060808a0135945060a08a01359350612dca60c08b01612d4f565b9250612dd860e08b01612d4f565b9150612de76101008b01612d4f565b90509295985092959850929598565b602081526001600160401b0382511660208201526000602083015163ffffffff80821660408501528060408601511660608501525050606083015160808301526080830151612e4860a0840182612b1c565b5060a083015161020083810152612822610220840182612c4c565b60008060008060008060a08789031215612e7c57600080fd5b612e8587612d1d565b9550612e9360208801612a7f565b945060408701359350612ea860608801612d4f565b925060808701356001600160401b0380821115612ec457600080fd5b818901915089601f830112612ed857600080fd5b813581811115612ee757600080fd5b8a6020828501011115612ef957600080fd5b6020830194508093505050509295509295509295565b600181811c90821680612f2357607f821691505b602082108103612f4357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b601f8211156126e257600081815260208120601f850160051c81016020861015612f9c5750805b601f850160051c820191505b818110156119e857828155600101612fa8565b81516001600160401b03811115612fd457612fd4612f5f565b612fe881612fe28454612f0f565b84612f75565b602080601f83116001811461301d57600084156130055750858301515b600019600386901b1c1916600185901b1785556119e8565b600085815260208120601f198616915b8281101561304c5788860151825594840194600190910190840161302d565b508582101561306a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6101608101611ea18284612b1c565b60208082526006908201526573746174757360d01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190808211156130dc576130dc6130a9565b5092915050565b6000602082840312156130f557600080fd5b5051919050565b63ffffffff831681526040602082015260006128226040830184612c4c565b80820180821115611ea157611ea16130a9565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128fa90830184612c20565b81810381811115611ea157611ea16130a9565b60208082526004908201526374696d6560e01b604082015260600190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000816000190483118215151615613207576132076130a9565b500290565b60008261322957634e487b7160e01b600052601260045260246000fd5b500490565b600063ffffffff80831681851681830481118215151615613251576132516130a9565b02949350505050565b60006020828403121561326c57600080fd5b815180151581146126f857600080fd5b6000825161328e818460208701612bfc565b9190910192915050565b6020815260006126f86020830184612c2056fea26469706673582212202cdd791d76f3d8cb9b7a157acbbd5c319efe6ab58db79cff02b79f12a6ca4bfb64736f6c63430008100033",
870
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c806356f65bee116100ad578063a0b94e0b11610071578063a0b94e0b14610243578063a3d890b614610263578063c11a463d1461026d578063f58e65b8146102ac578063ffa1ad74146102bf57600080fd5b806356f65bee146102035780636352c2621461020b578063724f27ee1461021e578063805d835d1461022657806385e471d51461023057600080fd5b80633ab22f01116100f45780633ab22f01146101ad57806342d21ef7146101c0578063454b1580146101d35780634c125e79146101db57806352e8b288146101f057600080fd5b80630392c34a146101265780631116fd041461014f578063112017a7146101745780631f7b6d3214610191575b600080fd5b610139610134366004612a9b565b6102d9565b6040516101469190612ab6565b60405180910390f35b61016261015d366004612b03565b610377565b60405161014696959493929190612ca7565b61017c600a81565b60405163ffffffff9091168152602001610146565b6001545b6040516001600160401b039091168152602001610146565b6101956101bb366004612cf3565b610552565b61017c6101ce366004612b03565b61059e565b61017c600581565b6101ee6101e9366004612d34565b6105d8565b005b6101ee6101fe366004612d34565b6108fc565b61017c600181565b610195610219366004612d63565b610c68565b61017c600281565b61017c620186a081565b6101ee61023e366004612d34565b611289565b610256610251366004612d34565b611465565b6040516101469190612df6565b61017c62018a8881565b6102947f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610146565b6101ee6102ba366004612e63565b6116c2565b6102c7600381565b60405160ff9091168152602001610146565b6001600160a01b03811660009081526003602090815260409182902080548351818402810184019094528084526060939283018282801561036b57602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b0316815260200190600801906020826007010492830192600103820291508084116103285790505b50505050509050919050565b6001818154811061038757600080fd5b6000918252602091829020600f90910201805460018201546040805161016081018252600285015463ffffffff81811683526401000000008083048216848a0152600160401b808404831685870152600160601b93849004831660608087019190915260038a01546001600160a01b0390811660808089019190915260048c0154821660a0808a019190915260058d0154831660c0808b019190915260068e0154841660e08b015260078e01546101008b015260088e01546101208b015260098e01546101408b01528a519081018b52600a8e018054808a1683529790970484169e81019e909e52600b8d0154909216988d0198909852600c8b0154918c0191909152600d8a0154968b0196909652600e890180546001600160401b038a169c5091890484169a94909804909216979596939594929390928401916104cb90612f0f565b80601f01602080910402602001604051908101604052809291908181526020018280546104f790612f0f565b80156105445780601f1061051957610100808354040283529160200191610544565b820191906000526020600020905b81548152906001019060200180831161052757829003601f168201915b505050505081525050905086565b6003602052816000526040600020818154811061056e57600080fd5b9060005260206000209060049182820401919006600802915091509054906101000a90046001600160401b031681565b600281815481106105ae57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6105e06119f0565b60006105eb82611465565b90508060800151608001516001600160a01b0316336001600160a01b0316146106435760405162461bcd60e51b815260206004820152600560248201526436b0b5b2b960d91b60448201526064015b60405180910390fd5b60016002836001600160401b03168154811061066157610661612f49565b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055506001816020019063ffffffff16908163ffffffff1681525050806001836001600160401b0316815481106106ca576106ca612f49565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e8401906108969082612fbb565b505050608080840151015183516040513381526001600160a01b0390921693506001600160401b031691507f84433a3c591ac98de0b89e7fc7a3d5d6705a3cbec760e7d529439c65d6feb3099060200160405180910390a3506108f96001600055565b50565b6109046119f0565b600061090f82611465565b905060008060008061092085611a49565b929650909450925090506109348584611e1c565b60808581015181015160608088015160408051338152602081018990528082018890529283018690529382015291516001600160a01b03878116939216916001600160401b038a16917fc7529bc0224b03ba593d84e2064baeac956a4221ca93d37af0f1810ad17df7a99181900360a00190a46109b085611e74565b600003610a6a57600280876001600160401b0316815481106109d4576109d4612f49565b60009182526020918290206008820401805460079092166004026101000a63ffffffff81810219909316949092169190910292909217909155600286820152608080870151015186516040513381526001600160a01b03888116949316926001600160401b03909216917fd08d3326dcd14f1021feb19d05834c4f6d0b7ff1fecac35981f24fd5f73873c5910160405180910390a45b846001876001600160401b031681548110610a8757610a87612f49565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e840190610c539082612fbb565b50505090505050505050506108f96001600055565b6000610c726119f0565b6001600160a01b03891615801590610c9c5750876001600160a01b0316896001600160a01b031614155b8015610cec57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b0316141580610cec57506001600160a01b03881615155b8015610cf85750600087115b8015610d045750600086115b8015610d105750868611155b8015610d1c5750600085115b8015610d2d5750428463ffffffff16115b8015610d405750600a63ffffffff841610155b610d755760405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b604482015260640161063a565b6000610d91610d8360015490565b8686868f8f8f8f8f8f611ea7565b9050610d9c81612096565b60018054808201825560009190915281517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6600f90920291820180546020808601516040808801516001600160401b039096166001600160601b031990941693909317600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b97841688021786556060808a01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf78a01556080808b015180517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf88c018054838a0151848c015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a1690980290961695909517908716909a0299909917909255878201517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf98a0180546001600160a01b03199081166001600160a01b039384161790915560a0808b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfa8d018054841691851691909117905560c08b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfb8d018054841691851691909117905560e08b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfc8d01805484169185169190911790556101008b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfd8d01556101208b01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cfe8d0155610140909a01517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cff8c0155898c015180517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d008d01805499830151919098166001600160c01b031990991698909817978316909502969096178555958301517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d018a018054909616961695909517909355928301517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d02870155908201517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d03860155928101518594929391927fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0d0401906111449082612fbb565b505050505060028590806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908363ffffffff16021790555060036000336001600160a01b03166001600160a01b03168152602001908152602001600020816000015190806001815401808255809150506001900390600052602060002090600491828204019190066008029091909190916101000a8154816001600160401b0302191690836001600160401b031602179055508a6001600160a01b0316336001600160a01b031682600001516001600160401b03167f831701c9313a778469897164a19ddd1867959a91eada7cc21adf0936761c83708460800151604051611267919061307a565b60405180910390a451905061127c6001600055565b9998505050505050505050565b6112916119f0565b600061129c82611465565b9050806020015163ffffffff1642106112c75760405162461bcd60e51b815260040161063a90613089565b80608001516060015181604001516112df91906130bf565b63ffffffff1642116113205760405162461bcd60e51b815260206004820152600a60248201526966696c6c2064656c617960b01b604482015260640161063a565b61132981611e74565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b03918216600482015230602482015291169063dd62ed3e90604401602060405180830381865afa158015611383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a791906130e3565b108061143157506113b781611e74565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801561140b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142f91906130e3565b105b6106435760405162461bcd60e51b81526020600482015260056024820152641d985b1a5960da1b604482015260640161063a565b61146d6129a3565b6001546001600160401b0316826001600160401b0316106114bd5760405162461bcd60e51b815260206004820152600a6024820152691a5b9d985b1a59081a5960b21b604482015260640161063a565b6001826001600160401b0316815481106114d9576114d9612f49565b60009182526020918290206040805160c08082018352600f90940290920180546001600160401b038116845263ffffffff600160401b808304821686890152600160601b928390048216868601526001840154606080880191909152855161016081018752600286015480851682526401000000008082048616838d01529381048516828901529490940483168482015260038501546001600160a01b039081166080868101919091526004870154821660a08088019190915260058801548316878c01526006880154831660e0880152600788015461010088015260088801546101208801526009880154610140880152818a01969096528751998a018852600a870180549586168b5293909404811699890199909952600b85015490981694870194909452600c83015496860196909652600d82015495850195909552600e8101805493959194828701949093928401919061163690612f0f565b80601f016020809104026020016040519081016040528092919081815260200182805461166290612f0f565b80156116af5780601f10611684576101008083540402835291602001916116af565b820191906000526020600020905b81548152906001019060200180831161169257829003601f168201915b5050509190925250505090525092915050565b6116ca6119f0565b6001600160a01b038516158015906116ea5750620186a063ffffffff8416105b61171f5760405162461bcd60e51b8152602060048201526006602482015265706172616d7360d01b604482015260640161063a565b600061172a87611465565b9050600061173c82888888888861221c565b905061178687828887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089969594939250506124bb9050565b816001896001600160401b0316815481106117a3576117a3612f49565b60009182526020918290208351600f92909202018054848401516040808701516001600160401b039095166001600160601b031990931692909217600160401b63ffffffff92831681029190911763ffffffff60601b19908116600160601b968416870217855560608089015160018701556080808a01518051600289018054838d0151848b015185880151948b1667ffffffffffffffff1990931692909217640100000000918b1682021767ffffffffffffffff60401b1916918a169098029096169590951790871690990298909817909255868201516003870180546001600160a01b03199081166001600160a01b039384161790915560a0808a015160048a018054841691851691909117905560c08a015160058a018054841691851691909117905560e08a015160068a01805484169185169190911790556101008a015160078a01556101208a015160088a0155610140909901516009890155888b01518051600a8a0180549c830151919098166001600160c01b0319909c169b909b179a831690950299909917855594830151600b8701805490991695169490941790965591820151600c84015593810151600d83015591820151909290600e84019061196f9082612fbb565b505050905050866001600160a01b03168260800151608001516001600160a01b031683600001516001600160401b03167fc6c7dd24446d66051e106d8289c1e1e3657b16ae283f4824b89417b1ec39664f888660a001516040516119d49291906130fc565b60405180910390a450506119e86001600055565b505050505050565b600260005403611a425760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161063a565b6002600055565b6000806000808460a00151602001516001600160a01b0316336001600160a01b031614611aa05760405162461bcd60e51b81526020600482015260056024820152643a30b5b2b960d91b604482015260640161063a565b846020015163ffffffff164210611ac95760405162461bcd60e51b815260040161063a90613089565b60808501516040015160a086015151611ae291906130bf565b63ffffffff164211611b225760405162461bcd60e51b81526020600482015260096024820152686269642064656c617960b81b604482015260640161063a565b5060a08401516040810151608090910151909350611b3f85611e74565b92506000611b4c86612524565b6080808801519081015160c090910151919250611b74916001600160a01b0316903087612540565b608086015160c001516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be691906130e3565b608087015160c00151909450611c06906001600160a01b031686866125b1565b846001600160a01b0316632506c018876080015160c00151611c2789612663565b87611c32878761311b565b8b60a0015160a001516040518663ffffffff1660e01b8152600401611c5b95949392919061312e565b600060405180830381600087803b158015611c7557600080fd5b505af1158015611c89573d6000803e3d6000fd5b50505050608086015160e001516001600160a01b0316611d1d57604051632e1a7d4d60e01b81524760048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015611d0457600080fd5b505af1158015611d18573d6000803e3d6000fd5b505050505b611d2686612663565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611d6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9091906130e3565b9250611d9c8284613168565b925080831015611dd85760405162461bcd60e51b81526020600482015260076024820152661b5a5b881bdd5d60ca1b604482015260640161063a565b611dfe8660a001516020015183611dee89612663565b6001600160a01b031691906126b2565b611e1486608001516080015184611dee89612663565b509193509193565b63ffffffff4210611e3f5760405162461bcd60e51b815260040161063a9061317b565b8160a001611e4b612a31565b905263ffffffff42166040830152606082018051829190611e6d90839061311b565b9052505050565b6000611ea182608001516101200151836060015184608001516101000151611e9c9190613168565b6126e7565b92915050565b611eaf6129a3565b63ffffffff4210611ed25760405162461bcd60e51b815260040161063a9061317b565b63ffffffff8a8116108015611eec575063ffffffff898116105b8015611efd575063ffffffff888116105b611f325760405162461bcd60e51b81526020600482015260066024820152653ab4b73a199960d11b604482015260640161063a565b6040518060c001604052808c6001600160401b031681526020018b63ffffffff168152602001600063ffffffff168152602001600081526020016040518061016001604052804263ffffffff1681526020018d63ffffffff1681526020018c63ffffffff1681526020018b63ffffffff168152602001336001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b03168152602001886001600160a01b031681526020018781526020018681526020018581525081526020016040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160401b0381111561205857612058612f5f565b6040519080825280601f01601f191660200182016040528015612082576020820181803683370190505b50905290529b9a5050505050505050505050565b61209f81611e74565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b03918216600482015230602482015291169063dd62ed3e90604401602060405180830381865afa1580156120f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211d91906130e3565b101561215d5760405162461bcd60e51b815260206004820152600f60248201526e6d616b657220616c6c6f77616e636560881b604482015260640161063a565b61216681611e74565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa1580156121ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121de91906130e3565b10156108f95760405162461bcd60e51b815260206004820152600d60248201526c6d616b65722062616c616e636560981b604482015260640161063a565b6000866020015163ffffffff1642106122475760405162461bcd60e51b815260040161063a90613089565b866080015160600151876040015161225f91906130bf565b63ffffffff1642116122a05760405162461bcd60e51b815260206004820152600a60248201526966696c6c2064656c617960b01b604482015260640161063a565b608087015160a001516001600160a01b031615806122d75750856001600160a01b0316876080015160a001516001600160a01b0316145b61230e5760405162461bcd60e51b815260206004820152600860248201526765786368616e676560c01b604482015260640161063a565b856001600160a01b031663650967b5886080015160c0015161232f8a612663565b6123388b611e74565b87876040518663ffffffff1660e01b815260040161235a959493929190613199565b602060405180830381865afa158015612377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239b91906130e3565b9050620186a06123b163ffffffff8616836131ed565b6123bb919061320c565b6123c59082613168565b90506123d18582613168565b60a088015160600151909150620186a0906123f09062018a88906131ed565b6123fa919061320c565b81118061243057506005876080015160400151612417919061322e565b60a08801515161242791906130bf565b63ffffffff1642115b6124665760405162461bcd60e51b81526020600482015260076024820152661b1bddc8189a5960ca1b604482015260640161063a565b61246f876126ff565b8110156124a85760405162461bcd60e51b81526020600482015260076024820152661b5a5b881bdd5d60ca1b604482015260640161063a565b6124b187612096565b9695505050505050565b63ffffffff42106124de5760405162461bcd60e51b815260040161063a9061317b565b6040805160c08101825263ffffffff421681523360208201526001600160a01b0395909516908501526060840192909252608083015260a0808301919091529190910152565b6000611ea18260a001516060015161253b846126ff565b612732565b6040516001600160a01b03808516602483015283166044820152606481018290526125ab9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612741565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262691906130e3565b612630919061311b565b6040516001600160a01b0385166024820152604481018290529091506125ab90859063095ea7b360e01b90606401612574565b608081015160e001516000906001600160a01b03161561268b57816080015160e00151611ea1565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b6040516001600160a01b0383166024820152604481018290526126e290849063a9059cbb60e01b90606401612574565b505050565b60008183106126f657816126f8565b825b9392505050565b60008160800151610120015161271483611e74565b8360800151610140015161272891906131ed565b611ea1919061320c565b60008183116126f657816126f8565b6000612796826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128139092919063ffffffff16565b8051909150156126e257808060200190518101906127b4919061325a565b6126e25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161063a565b6060612822848460008561282a565b949350505050565b60608247101561288b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161063a565b600080866001600160a01b031685876040516128a7919061327c565b60006040518083038185875af1925050503d80600081146128e4576040519150601f19603f3d011682016040523d82523d6000602084013e6128e9565b606091505b50915091506128fa87838387612905565b979650505050505050565b6060831561297457825160000361296d576001600160a01b0385163b61296d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161063a565b5081612822565b61282283838151156129895781518083602001fd5b8060405162461bcd60e51b815260040161063a9190613298565b6040805160c08082018352600080835260208084018290528385018290526060808501839052855161016081018752838152918201839052948101829052938401819052608084810182905260a0850182905291840181905260e08401819052610100840181905261012084018190526101408401529091908201908152602001612a2c612a31565b905290565b6040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b80356001600160a01b0381168114612a9657600080fd5b919050565b600060208284031215612aad57600080fd5b6126f882612a7f565b6020808252825182820181905260009190848201906040850190845b81811015612af75783516001600160401b031683529284019291840191600101612ad2565b50909695505050505050565b600060208284031215612b1557600080fd5b5035919050565b805163ffffffff1682526020810151612b3d602084018263ffffffff169052565b506040810151612b55604084018263ffffffff169052565b506060810151612b6d606084018263ffffffff169052565b506080810151612b8860808401826001600160a01b03169052565b5060a0810151612ba360a08401826001600160a01b03169052565b5060c0810151612bbe60c08401826001600160a01b03169052565b5060e0810151612bd960e08401826001600160a01b03169052565b506101008181015190830152610120808201519083015261014090810151910152565b60005b83811015612c17578181015183820152602001612bff565b50506000910152565b60008151808452612c38816020860160208601612bfc565b601f01601f19169290920160200192915050565b63ffffffff81511682526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a085015261282260c0850182612c20565b6001600160401b038716815263ffffffff868116602083015285166040820152606081018490526000610200612ce06080840186612b1c565b806101e084015261127c81840185612c4c565b60008060408385031215612d0657600080fd5b612d0f83612a7f565b946020939093013593505050565b80356001600160401b0381168114612a9657600080fd5b600060208284031215612d4657600080fd5b6126f882612d1d565b803563ffffffff81168114612a9657600080fd5b60008060008060008060008060006101208a8c031215612d8257600080fd5b612d8b8a612a7f565b9850612d9960208b01612a7f565b9750612da760408b01612a7f565b965060608a0135955060808a0135945060a08a01359350612dca60c08b01612d4f565b9250612dd860e08b01612d4f565b9150612de76101008b01612d4f565b90509295985092959850929598565b602081526001600160401b0382511660208201526000602083015163ffffffff80821660408501528060408601511660608501525050606083015160808301526080830151612e4860a0840182612b1c565b5060a083015161020083810152612822610220840182612c4c565b60008060008060008060a08789031215612e7c57600080fd5b612e8587612d1d565b9550612e9360208801612a7f565b945060408701359350612ea860608801612d4f565b925060808701356001600160401b0380821115612ec457600080fd5b818901915089601f830112612ed857600080fd5b813581811115612ee757600080fd5b8a6020828501011115612ef957600080fd5b6020830194508093505050509295509295509295565b600181811c90821680612f2357607f821691505b602082108103612f4357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b601f8211156126e257600081815260208120601f850160051c81016020861015612f9c5750805b601f850160051c820191505b818110156119e857828155600101612fa8565b81516001600160401b03811115612fd457612fd4612f5f565b612fe881612fe28454612f0f565b84612f75565b602080601f83116001811461301d57600084156130055750858301515b600019600386901b1c1916600185901b1785556119e8565b600085815260208120601f198616915b8281101561304c5788860151825594840194600190910190840161302d565b508582101561306a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6101608101611ea18284612b1c565b60208082526006908201526573746174757360d01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190808211156130dc576130dc6130a9565b5092915050565b6000602082840312156130f557600080fd5b5051919050565b63ffffffff831681526040602082015260006128226040830184612c4c565b80820180821115611ea157611ea16130a9565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128fa90830184612c20565b81810381811115611ea157611ea16130a9565b60208082526004908201526374696d6560e01b604082015260600190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000816000190483118215151615613207576132076130a9565b500290565b60008261322957634e487b7160e01b600052601260045260246000fd5b500490565b600063ffffffff80831681851681830481118215151615613251576132516130a9565b02949350505050565b60006020828403121561326c57600080fd5b815180151581146126f857600080fd5b6000825161328e818460208701612bfc565b9190910192915050565b6020815260006126f86020830184612c2056fea26469706673582212202cdd791d76f3d8cb9b7a157acbbd5c319efe6ab58db79cff02b79f12a6ca4bfb64736f6c63430008100033",
847
871
  "linkReferences": {},
848
872
  "deployedLinkReferences": {}
849
873
  }
@@ -481,8 +481,8 @@
481
481
  "type": "function"
482
482
  }
483
483
  ],
484
- "bytecode": "0x60a060405234801561001057600080fd5b5060405161175c38038061175c83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161168c6100d06000396000818160610152818161011b015281816101df01528181610280015281816103ae015281816105e50152818161068f015281816107bb015281816108be0152818161095f0152610a5b015261168c6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80631208aa181461005c57806319f37aea146100a05780631f7b6d32146100c057806334b819fc146100e05780635371c9eb146100f3575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b36100ae366004610eab565b610106565b6040516100979190610f96565b6100c86105e1565b6040516001600160401b039091168152602001610097565b6100b36100ee366004611124565b61066a565b6100b3610101366004610eab565b61086b565b606060006101148484610c8d565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663454b15806040518163ffffffff1660e01b8152600401602060405180830381865afa158015610177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019b919061115a565b905060005b8351816001600160401b031610156104ff5760006101be828961118b565b6040516342d21ef760e01b81526001600160401b03821660048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342d21ef790602401602060405180830381865afa15801561022e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610252919061115a565b63ffffffff164210156104ec5760405163a0b94e0b60e01b81526001600160401b03821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a0b94e0b90602401600060405180830381865afa1580156102cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102f79190810190611337565b9050806080015160600151816040015161031191906114b7565b63ffffffff16421180156103715750896001600160a01b03168160a00151602001516001600160a01b031614158061037157508381608001516040015161035891906114d4565b60a08201515161036891906114b7565b63ffffffff1642115b8015610424575061038181610d67565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000008216602482015291169063dd62ed3e90604401602060405180830381865afa1580156103fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104219190611500565b10155b80156104af575061043481610d67565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac9190611500565b10155b156104ea578086866001600160401b0316815181106104d0576104d0611519565b602002602001018190525084806104e69061152f565b9550505b505b50806104f78161152f565b9150506101a0565b50816001600160401b03166001600160401b03811115610521576105216111b2565b60405190808252806020026020018201604052801561055a57816020015b610547610da7565b81526020019060019003908161053f5790505b50935060005b826001600160401b0316816001600160401b031610156105d65783816001600160401b03168151811061059557610595611519565b602002602001015185826001600160401b0316815181106105b8576105b8611519565b602002602001018190525080806105ce9061152f565b915050610560565b505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f7b6d326040518163ffffffff1660e01b8152600401602060405180830381865afa158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190611555565b905090565b6040516301c961a560e11b81526001600160a01b0382811660048301526060916000917f00000000000000000000000000000000000000000000000000000000000000001690630392c34a90602401600060405180830381865afa1580156106d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106fe9190810190611572565b905080516001600160401b03811115610719576107196111b2565b60405190808252806020026020018201604052801561075257816020015b61073f610da7565b8152602001906001900390816107375790505b50915060005b8251816001600160401b0316101561086457600082826001600160401b03168151811061078757610787611519565b602090810291909101015160405163a0b94e0b60e01b81526001600160401b03821660048201529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a0b94e0b90602401600060405180830381865afa158015610802573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261082a9190810190611337565b84836001600160401b03168151811061084557610845611519565b602002602001018190525050808061085c9061152f565b915050610758565b5050919050565b606060006108798484610c8d565b90506000805b8251816001600160401b03161015610bac57600061089d828861118b565b6040516342d21ef760e01b81526001600160401b03821660048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342d21ef790602401602060405180830381865afa15801561090d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610931919061115a565b63ffffffff16421015610b995760405163a0b94e0b60e01b81526001600160401b03821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a0b94e0b90602401600060405180830381865afa1580156109ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109d69190810190611337565b9050886001600160a01b03168160a00151602001516001600160a01b0316148015610a1e575060808101516040015160a082015151610a1591906114b7565b63ffffffff1642115b8015610ad15750610a2e81610d67565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000008216602482015291169063dd62ed3e90604401602060405180830381865afa158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace9190611500565b10155b8015610b5c5750610ae181610d67565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b599190611500565b10155b15610b97578085856001600160401b031681518110610b7d57610b7d611519565b60200260200101819052508380610b939061152f565b9450505b505b5080610ba48161152f565b91505061087f565b50806001600160401b03166001600160401b03811115610bce57610bce6111b2565b604051908082528060200260200182016040528015610c0757816020015b610bf4610da7565b815260200190600190039081610bec5790505b50925060005b816001600160401b0316816001600160401b03161015610c835782816001600160401b031681518110610c4257610c42611519565b602002602001015184826001600160401b031681518110610c6557610c65611519565b60200260200101819052508080610c7b9061152f565b915050610c0d565b5050509392505050565b6060610c976105e1565b6001600160401b0316836001600160401b031610610ce75760405162461bcd60e51b81526020600482015260096024820152680d8c2e6e892dcc8caf60bb1b604482015260640160405180910390fd5b610d0d610cf5846001611623565b6001600160401b0316836001600160401b0316610d8f565b6001600160401b03811115610d2457610d246111b2565b604051908082528060200260200182016040528015610d5d57816020015b610d4a610da7565b815260200190600190039081610d425790505b5090505b92915050565b6000610d6182608001516101200151836060015184608001516101000151610d8f9190611643565b6000818310610d9e5781610da0565b825b9392505050565b6040805160c08082018352600080835260208084018290528385018290526060808501839052855161016081018752838152918201839052948101829052938401819052608084810182905260a0850182905291840181905260e08401819052610100840181905261012084018190526101408401529091908201908152602001610e796040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b905290565b6001600160a01b0381168114610e9357600080fd5b50565b6001600160401b0381168114610e9357600080fd5b600080600060608486031215610ec057600080fd5b8335610ecb81610e7e565b92506020840135610edb81610e96565b91506040840135610eeb81610e96565b809150509250925092565b60005b83811015610f11578181015183820152602001610ef9565b50506000910152565b63ffffffff81511682526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a085015280518060c0860152610f818160e0870160208501610ef6565b601f01601f19169390930160e0019392505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561111657888303603f19018552815180516001600160401b031684528781015163ffffffff908116898601528782015181168886015260608083015181870152608080840151805190931681880152610200928b81015160a061102b818b018363ffffffff169052565b8c830151915060c0611044818c018463ffffffff169052565b948301519460e0925061105e8b84018763ffffffff169052565b9383015194506101009361107c8b8601876001600160a01b03169052565b818401519550610120611099818d01886001600160a01b03169052565b908401519550610140906110b78c8301886001600160a01b03169052565b928401516001600160a01b03166101608c0152938301516101808b0152908201516101a08a01529101516101c088015292909201516101e08601829052915061110281860183610f1a565b968901969450505090860190600101610fbd565b509098975050505050505050565b60006020828403121561113657600080fd5b8135610da081610e7e565b805163ffffffff8116811461115557600080fd5b919050565b60006020828403121561116c57600080fd5b610da082611141565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038281168282160390808211156111ab576111ab611175565b5092915050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156111ea576111ea6111b2565b60405290565b60405161016081016001600160401b03811182821017156111ea576111ea6111b2565b604051601f8201601f191681016001600160401b038111828210171561123b5761123b6111b2565b604052919050565b805161115581610e7e565b600060c0828403121561126057600080fd5b6112686111c8565b905061127382611141565b815260208083015161128481610e7e565b82820152604083015161129681610e7e565b80604084015250606083015160608301526080830151608083015260a08301516001600160401b03808211156112cb57600080fd5b818501915085601f8301126112df57600080fd5b8151818111156112f1576112f16111b2565b611303601f8201601f19168501611213565b9150808252868482850101111561131957600080fd5b61132881858401868601610ef6565b5060a084015250909392505050565b60006020828403121561134957600080fd5b81516001600160401b038082111561136057600080fd5b9083019081850361020081121561137657600080fd5b61137e6111c8565b835161138981610e96565b815261139760208501611141565b60208201526113a860408501611141565b60408201526060840151606082015261016080607f19840112156113cb57600080fd5b6113d36111f0565b92506113e160808601611141565b83526113ef60a08601611141565b602084015261140060c08601611141565b604084015261141160e08601611141565b6060840152610100611424818701611243565b6080850152610120611437818801611243565b60a086015261014061144a818901611243565b60c087015261145a848901611243565b60e0870152610180880151838701526101a0880151828701526101c088015181870152505050508160808201526101e084015191508282111561149c57600080fd5b6114a88783860161124e565b60a08201529695505050505050565b63ffffffff8181168382160190808211156111ab576111ab611175565b600063ffffffff808316818516818304811182151516156114f7576114f7611175565b02949350505050565b60006020828403121561151257600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b0380831681810361154b5761154b611175565b6001019392505050565b60006020828403121561156757600080fd5b8151610da081610e96565b6000602080838503121561158557600080fd5b82516001600160401b038082111561159c57600080fd5b818501915085601f8301126115b057600080fd5b8151818111156115c2576115c26111b2565b8060051b91506115d3848301611213565b81815291830184019184810190888411156115ed57600080fd5b938501935b83851015611617578451925061160783610e96565b82825293850193908501906115f2565b98975050505050505050565b6001600160401b038181168382160190808211156111ab576111ab611175565b81810381811115610d6157610d6161117556fea2646970667358221220837a123c09f34a88b747ba1f08572bf78323f06a481c790c45f3cc5bdb52a02f64736f6c63430008100033",
485
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80631208aa181461005c57806319f37aea146100a05780631f7b6d32146100c057806334b819fc146100e05780635371c9eb146100f3575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b36100ae366004610eab565b610106565b6040516100979190610f96565b6100c86105e1565b6040516001600160401b039091168152602001610097565b6100b36100ee366004611124565b61066a565b6100b3610101366004610eab565b61086b565b606060006101148484610c8d565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663454b15806040518163ffffffff1660e01b8152600401602060405180830381865afa158015610177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019b919061115a565b905060005b8351816001600160401b031610156104ff5760006101be828961118b565b6040516342d21ef760e01b81526001600160401b03821660048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342d21ef790602401602060405180830381865afa15801561022e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610252919061115a565b63ffffffff164210156104ec5760405163a0b94e0b60e01b81526001600160401b03821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a0b94e0b90602401600060405180830381865afa1580156102cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102f79190810190611337565b9050806080015160600151816040015161031191906114b7565b63ffffffff16421180156103715750896001600160a01b03168160a00151602001516001600160a01b031614158061037157508381608001516040015161035891906114d4565b60a08201515161036891906114b7565b63ffffffff1642115b8015610424575061038181610d67565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000008216602482015291169063dd62ed3e90604401602060405180830381865afa1580156103fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104219190611500565b10155b80156104af575061043481610d67565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac9190611500565b10155b156104ea578086866001600160401b0316815181106104d0576104d0611519565b602002602001018190525084806104e69061152f565b9550505b505b50806104f78161152f565b9150506101a0565b50816001600160401b03166001600160401b03811115610521576105216111b2565b60405190808252806020026020018201604052801561055a57816020015b610547610da7565b81526020019060019003908161053f5790505b50935060005b826001600160401b0316816001600160401b031610156105d65783816001600160401b03168151811061059557610595611519565b602002602001015185826001600160401b0316815181106105b8576105b8611519565b602002602001018190525080806105ce9061152f565b915050610560565b505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f7b6d326040518163ffffffff1660e01b8152600401602060405180830381865afa158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190611555565b905090565b6040516301c961a560e11b81526001600160a01b0382811660048301526060916000917f00000000000000000000000000000000000000000000000000000000000000001690630392c34a90602401600060405180830381865afa1580156106d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106fe9190810190611572565b905080516001600160401b03811115610719576107196111b2565b60405190808252806020026020018201604052801561075257816020015b61073f610da7565b8152602001906001900390816107375790505b50915060005b8251816001600160401b0316101561086457600082826001600160401b03168151811061078757610787611519565b602090810291909101015160405163a0b94e0b60e01b81526001600160401b03821660048201529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a0b94e0b90602401600060405180830381865afa158015610802573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261082a9190810190611337565b84836001600160401b03168151811061084557610845611519565b602002602001018190525050808061085c9061152f565b915050610758565b5050919050565b606060006108798484610c8d565b90506000805b8251816001600160401b03161015610bac57600061089d828861118b565b6040516342d21ef760e01b81526001600160401b03821660048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342d21ef790602401602060405180830381865afa15801561090d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610931919061115a565b63ffffffff16421015610b995760405163a0b94e0b60e01b81526001600160401b03821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a0b94e0b90602401600060405180830381865afa1580156109ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109d69190810190611337565b9050886001600160a01b03168160a00151602001516001600160a01b0316148015610a1e575060808101516040015160a082015151610a1591906114b7565b63ffffffff1642115b8015610ad15750610a2e81610d67565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000008216602482015291169063dd62ed3e90604401602060405180830381865afa158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace9190611500565b10155b8015610b5c5750610ae181610d67565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b599190611500565b10155b15610b97578085856001600160401b031681518110610b7d57610b7d611519565b60200260200101819052508380610b939061152f565b9450505b505b5080610ba48161152f565b91505061087f565b50806001600160401b03166001600160401b03811115610bce57610bce6111b2565b604051908082528060200260200182016040528015610c0757816020015b610bf4610da7565b815260200190600190039081610bec5790505b50925060005b816001600160401b0316816001600160401b03161015610c835782816001600160401b031681518110610c4257610c42611519565b602002602001015184826001600160401b031681518110610c6557610c65611519565b60200260200101819052508080610c7b9061152f565b915050610c0d565b5050509392505050565b6060610c976105e1565b6001600160401b0316836001600160401b031610610ce75760405162461bcd60e51b81526020600482015260096024820152680d8c2e6e892dcc8caf60bb1b604482015260640160405180910390fd5b610d0d610cf5846001611623565b6001600160401b0316836001600160401b0316610d8f565b6001600160401b03811115610d2457610d246111b2565b604051908082528060200260200182016040528015610d5d57816020015b610d4a610da7565b815260200190600190039081610d425790505b5090505b92915050565b6000610d6182608001516101200151836060015184608001516101000151610d8f9190611643565b6000818310610d9e5781610da0565b825b9392505050565b6040805160c08082018352600080835260208084018290528385018290526060808501839052855161016081018752838152918201839052948101829052938401819052608084810182905260a0850182905291840181905260e08401819052610100840181905261012084018190526101408401529091908201908152602001610e796040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b905290565b6001600160a01b0381168114610e9357600080fd5b50565b6001600160401b0381168114610e9357600080fd5b600080600060608486031215610ec057600080fd5b8335610ecb81610e7e565b92506020840135610edb81610e96565b91506040840135610eeb81610e96565b809150509250925092565b60005b83811015610f11578181015183820152602001610ef9565b50506000910152565b63ffffffff81511682526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a085015280518060c0860152610f818160e0870160208501610ef6565b601f01601f19169390930160e0019392505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561111657888303603f19018552815180516001600160401b031684528781015163ffffffff908116898601528782015181168886015260608083015181870152608080840151805190931681880152610200928b81015160a061102b818b018363ffffffff169052565b8c830151915060c0611044818c018463ffffffff169052565b948301519460e0925061105e8b84018763ffffffff169052565b9383015194506101009361107c8b8601876001600160a01b03169052565b818401519550610120611099818d01886001600160a01b03169052565b908401519550610140906110b78c8301886001600160a01b03169052565b928401516001600160a01b03166101608c0152938301516101808b0152908201516101a08a01529101516101c088015292909201516101e08601829052915061110281860183610f1a565b968901969450505090860190600101610fbd565b509098975050505050505050565b60006020828403121561113657600080fd5b8135610da081610e7e565b805163ffffffff8116811461115557600080fd5b919050565b60006020828403121561116c57600080fd5b610da082611141565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038281168282160390808211156111ab576111ab611175565b5092915050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156111ea576111ea6111b2565b60405290565b60405161016081016001600160401b03811182821017156111ea576111ea6111b2565b604051601f8201601f191681016001600160401b038111828210171561123b5761123b6111b2565b604052919050565b805161115581610e7e565b600060c0828403121561126057600080fd5b6112686111c8565b905061127382611141565b815260208083015161128481610e7e565b82820152604083015161129681610e7e565b80604084015250606083015160608301526080830151608083015260a08301516001600160401b03808211156112cb57600080fd5b818501915085601f8301126112df57600080fd5b8151818111156112f1576112f16111b2565b611303601f8201601f19168501611213565b9150808252868482850101111561131957600080fd5b61132881858401868601610ef6565b5060a084015250909392505050565b60006020828403121561134957600080fd5b81516001600160401b038082111561136057600080fd5b9083019081850361020081121561137657600080fd5b61137e6111c8565b835161138981610e96565b815261139760208501611141565b60208201526113a860408501611141565b60408201526060840151606082015261016080607f19840112156113cb57600080fd5b6113d36111f0565b92506113e160808601611141565b83526113ef60a08601611141565b602084015261140060c08601611141565b604084015261141160e08601611141565b6060840152610100611424818701611243565b6080850152610120611437818801611243565b60a086015261014061144a818901611243565b60c087015261145a848901611243565b60e0870152610180880151838701526101a0880151828701526101c088015181870152505050508160808201526101e084015191508282111561149c57600080fd5b6114a88783860161124e565b60a08201529695505050505050565b63ffffffff8181168382160190808211156111ab576111ab611175565b600063ffffffff808316818516818304811182151516156114f7576114f7611175565b02949350505050565b60006020828403121561151257600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b0380831681810361154b5761154b611175565b6001019392505050565b60006020828403121561156757600080fd5b8151610da081610e96565b6000602080838503121561158557600080fd5b82516001600160401b038082111561159c57600080fd5b818501915085601f8301126115b057600080fd5b8151818111156115c2576115c26111b2565b8060051b91506115d3848301611213565b81815291830184019184810190888411156115ed57600080fd5b938501935b83851015611617578451925061160783610e96565b82825293850193908501906115f2565b98975050505050505050565b6001600160401b038181168382160190808211156111ab576111ab611175565b81810381811115610d6157610d6161117556fea2646970667358221220837a123c09f34a88b747ba1f08572bf78323f06a481c790c45f3cc5bdb52a02f64736f6c63430008100033",
484
+ "bytecode": "0x60a060405234801561001057600080fd5b5060405161175c38038061175c83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161168c6100d06000396000818160610152818161011b015281816101df01528181610280015281816103ae015281816105e50152818161068f015281816107bb015281816108be0152818161095f0152610a5b015261168c6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80631208aa181461005c57806319f37aea146100a05780631f7b6d32146100c057806334b819fc146100e05780635371c9eb146100f3575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b36100ae366004610eab565b610106565b6040516100979190610f96565b6100c86105e1565b6040516001600160401b039091168152602001610097565b6100b36100ee366004611124565b61066a565b6100b3610101366004610eab565b61086b565b606060006101148484610c8d565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663454b15806040518163ffffffff1660e01b8152600401602060405180830381865afa158015610177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019b919061115a565b905060005b8351816001600160401b031610156104ff5760006101be828961118b565b6040516342d21ef760e01b81526001600160401b03821660048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342d21ef790602401602060405180830381865afa15801561022e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610252919061115a565b63ffffffff164210156104ec5760405163a0b94e0b60e01b81526001600160401b03821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a0b94e0b90602401600060405180830381865afa1580156102cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102f79190810190611337565b9050806080015160600151816040015161031191906114b7565b63ffffffff16421180156103715750896001600160a01b03168160a00151602001516001600160a01b031614158061037157508381608001516040015161035891906114d4565b60a08201515161036891906114b7565b63ffffffff1642115b8015610424575061038181610d67565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000008216602482015291169063dd62ed3e90604401602060405180830381865afa1580156103fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104219190611500565b10155b80156104af575061043481610d67565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac9190611500565b10155b156104ea578086866001600160401b0316815181106104d0576104d0611519565b602002602001018190525084806104e69061152f565b9550505b505b50806104f78161152f565b9150506101a0565b50816001600160401b03166001600160401b03811115610521576105216111b2565b60405190808252806020026020018201604052801561055a57816020015b610547610da7565b81526020019060019003908161053f5790505b50935060005b826001600160401b0316816001600160401b031610156105d65783816001600160401b03168151811061059557610595611519565b602002602001015185826001600160401b0316815181106105b8576105b8611519565b602002602001018190525080806105ce9061152f565b915050610560565b505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f7b6d326040518163ffffffff1660e01b8152600401602060405180830381865afa158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190611555565b905090565b6040516301c961a560e11b81526001600160a01b0382811660048301526060916000917f00000000000000000000000000000000000000000000000000000000000000001690630392c34a90602401600060405180830381865afa1580156106d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106fe9190810190611572565b905080516001600160401b03811115610719576107196111b2565b60405190808252806020026020018201604052801561075257816020015b61073f610da7565b8152602001906001900390816107375790505b50915060005b8251816001600160401b0316101561086457600082826001600160401b03168151811061078757610787611519565b602090810291909101015160405163a0b94e0b60e01b81526001600160401b03821660048201529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a0b94e0b90602401600060405180830381865afa158015610802573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261082a9190810190611337565b84836001600160401b03168151811061084557610845611519565b602002602001018190525050808061085c9061152f565b915050610758565b5050919050565b606060006108798484610c8d565b90506000805b8251816001600160401b03161015610bac57600061089d828861118b565b6040516342d21ef760e01b81526001600160401b03821660048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342d21ef790602401602060405180830381865afa15801561090d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610931919061115a565b63ffffffff16421015610b995760405163a0b94e0b60e01b81526001600160401b03821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a0b94e0b90602401600060405180830381865afa1580156109ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109d69190810190611337565b9050886001600160a01b03168160a00151602001516001600160a01b0316148015610a1e575060808101516040015160a082015151610a1591906114b7565b63ffffffff1642115b8015610ad15750610a2e81610d67565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000008216602482015291169063dd62ed3e90604401602060405180830381865afa158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace9190611500565b10155b8015610b5c5750610ae181610d67565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b599190611500565b10155b15610b97578085856001600160401b031681518110610b7d57610b7d611519565b60200260200101819052508380610b939061152f565b9450505b505b5080610ba48161152f565b91505061087f565b50806001600160401b03166001600160401b03811115610bce57610bce6111b2565b604051908082528060200260200182016040528015610c0757816020015b610bf4610da7565b815260200190600190039081610bec5790505b50925060005b816001600160401b0316816001600160401b03161015610c835782816001600160401b031681518110610c4257610c42611519565b602002602001015184826001600160401b031681518110610c6557610c65611519565b60200260200101819052508080610c7b9061152f565b915050610c0d565b5050509392505050565b6060610c976105e1565b6001600160401b0316836001600160401b031610610ce75760405162461bcd60e51b81526020600482015260096024820152680d8c2e6e892dcc8caf60bb1b604482015260640160405180910390fd5b610d0d610cf5846001611623565b6001600160401b0316836001600160401b0316610d8f565b6001600160401b03811115610d2457610d246111b2565b604051908082528060200260200182016040528015610d5d57816020015b610d4a610da7565b815260200190600190039081610d425790505b5090505b92915050565b6000610d6182608001516101200151836060015184608001516101000151610d8f9190611643565b6000818310610d9e5781610da0565b825b9392505050565b6040805160c08082018352600080835260208084018290528385018290526060808501839052855161016081018752838152918201839052948101829052938401819052608084810182905260a0850182905291840181905260e08401819052610100840181905261012084018190526101408401529091908201908152602001610e796040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b905290565b6001600160a01b0381168114610e9357600080fd5b50565b6001600160401b0381168114610e9357600080fd5b600080600060608486031215610ec057600080fd5b8335610ecb81610e7e565b92506020840135610edb81610e96565b91506040840135610eeb81610e96565b809150509250925092565b60005b83811015610f11578181015183820152602001610ef9565b50506000910152565b63ffffffff81511682526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a085015280518060c0860152610f818160e0870160208501610ef6565b601f01601f19169390930160e0019392505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561111657888303603f19018552815180516001600160401b031684528781015163ffffffff908116898601528782015181168886015260608083015181870152608080840151805190931681880152610200928b81015160a061102b818b018363ffffffff169052565b8c830151915060c0611044818c018463ffffffff169052565b948301519460e0925061105e8b84018763ffffffff169052565b9383015194506101009361107c8b8601876001600160a01b03169052565b818401519550610120611099818d01886001600160a01b03169052565b908401519550610140906110b78c8301886001600160a01b03169052565b928401516001600160a01b03166101608c0152938301516101808b0152908201516101a08a01529101516101c088015292909201516101e08601829052915061110281860183610f1a565b968901969450505090860190600101610fbd565b509098975050505050505050565b60006020828403121561113657600080fd5b8135610da081610e7e565b805163ffffffff8116811461115557600080fd5b919050565b60006020828403121561116c57600080fd5b610da082611141565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038281168282160390808211156111ab576111ab611175565b5092915050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156111ea576111ea6111b2565b60405290565b60405161016081016001600160401b03811182821017156111ea576111ea6111b2565b604051601f8201601f191681016001600160401b038111828210171561123b5761123b6111b2565b604052919050565b805161115581610e7e565b600060c0828403121561126057600080fd5b6112686111c8565b905061127382611141565b815260208083015161128481610e7e565b82820152604083015161129681610e7e565b80604084015250606083015160608301526080830151608083015260a08301516001600160401b03808211156112cb57600080fd5b818501915085601f8301126112df57600080fd5b8151818111156112f1576112f16111b2565b611303601f8201601f19168501611213565b9150808252868482850101111561131957600080fd5b61132881858401868601610ef6565b5060a084015250909392505050565b60006020828403121561134957600080fd5b81516001600160401b038082111561136057600080fd5b9083019081850361020081121561137657600080fd5b61137e6111c8565b835161138981610e96565b815261139760208501611141565b60208201526113a860408501611141565b60408201526060840151606082015261016080607f19840112156113cb57600080fd5b6113d36111f0565b92506113e160808601611141565b83526113ef60a08601611141565b602084015261140060c08601611141565b604084015261141160e08601611141565b6060840152610100611424818701611243565b6080850152610120611437818801611243565b60a086015261014061144a818901611243565b60c087015261145a848901611243565b60e0870152610180880151838701526101a0880151828701526101c088015181870152505050508160808201526101e084015191508282111561149c57600080fd5b6114a88783860161124e565b60a08201529695505050505050565b63ffffffff8181168382160190808211156111ab576111ab611175565b600063ffffffff808316818516818304811182151516156114f7576114f7611175565b02949350505050565b60006020828403121561151257600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b0380831681810361154b5761154b611175565b6001019392505050565b60006020828403121561156757600080fd5b8151610da081610e96565b6000602080838503121561158557600080fd5b82516001600160401b038082111561159c57600080fd5b818501915085601f8301126115b057600080fd5b8151818111156115c2576115c26111b2565b8060051b91506115d3848301611213565b81815291830184019184810190888411156115ed57600080fd5b938501935b83851015611617578451925061160783610e96565b82825293850193908501906115f2565b98975050505050505050565b6001600160401b038181168382160190808211156111ab576111ab611175565b81810381811115610d6157610d6161117556fea2646970667358221220af6f6a0b608beea5b35f180839ddcbfbabd1bfca0c3050d89cbeb11e6093317764736f6c63430008100033",
485
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80631208aa181461005c57806319f37aea146100a05780631f7b6d32146100c057806334b819fc146100e05780635371c9eb146100f3575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b36100ae366004610eab565b610106565b6040516100979190610f96565b6100c86105e1565b6040516001600160401b039091168152602001610097565b6100b36100ee366004611124565b61066a565b6100b3610101366004610eab565b61086b565b606060006101148484610c8d565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663454b15806040518163ffffffff1660e01b8152600401602060405180830381865afa158015610177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019b919061115a565b905060005b8351816001600160401b031610156104ff5760006101be828961118b565b6040516342d21ef760e01b81526001600160401b03821660048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342d21ef790602401602060405180830381865afa15801561022e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610252919061115a565b63ffffffff164210156104ec5760405163a0b94e0b60e01b81526001600160401b03821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a0b94e0b90602401600060405180830381865afa1580156102cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102f79190810190611337565b9050806080015160600151816040015161031191906114b7565b63ffffffff16421180156103715750896001600160a01b03168160a00151602001516001600160a01b031614158061037157508381608001516040015161035891906114d4565b60a08201515161036891906114b7565b63ffffffff1642115b8015610424575061038181610d67565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000008216602482015291169063dd62ed3e90604401602060405180830381865afa1580156103fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104219190611500565b10155b80156104af575061043481610d67565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac9190611500565b10155b156104ea578086866001600160401b0316815181106104d0576104d0611519565b602002602001018190525084806104e69061152f565b9550505b505b50806104f78161152f565b9150506101a0565b50816001600160401b03166001600160401b03811115610521576105216111b2565b60405190808252806020026020018201604052801561055a57816020015b610547610da7565b81526020019060019003908161053f5790505b50935060005b826001600160401b0316816001600160401b031610156105d65783816001600160401b03168151811061059557610595611519565b602002602001015185826001600160401b0316815181106105b8576105b8611519565b602002602001018190525080806105ce9061152f565b915050610560565b505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631f7b6d326040518163ffffffff1660e01b8152600401602060405180830381865afa158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190611555565b905090565b6040516301c961a560e11b81526001600160a01b0382811660048301526060916000917f00000000000000000000000000000000000000000000000000000000000000001690630392c34a90602401600060405180830381865afa1580156106d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106fe9190810190611572565b905080516001600160401b03811115610719576107196111b2565b60405190808252806020026020018201604052801561075257816020015b61073f610da7565b8152602001906001900390816107375790505b50915060005b8251816001600160401b0316101561086457600082826001600160401b03168151811061078757610787611519565b602090810291909101015160405163a0b94e0b60e01b81526001600160401b03821660048201529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a0b94e0b90602401600060405180830381865afa158015610802573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261082a9190810190611337565b84836001600160401b03168151811061084557610845611519565b602002602001018190525050808061085c9061152f565b915050610758565b5050919050565b606060006108798484610c8d565b90506000805b8251816001600160401b03161015610bac57600061089d828861118b565b6040516342d21ef760e01b81526001600160401b03821660048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342d21ef790602401602060405180830381865afa15801561090d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610931919061115a565b63ffffffff16421015610b995760405163a0b94e0b60e01b81526001600160401b03821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a0b94e0b90602401600060405180830381865afa1580156109ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109d69190810190611337565b9050886001600160a01b03168160a00151602001516001600160a01b0316148015610a1e575060808101516040015160a082015151610a1591906114b7565b63ffffffff1642115b8015610ad15750610a2e81610d67565b60808281015160c0810151910151604051636eb1769f60e11b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000008216602482015291169063dd62ed3e90604401602060405180830381865afa158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace9190611500565b10155b8015610b5c5750610ae181610d67565b60808281015160c08101519101516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b599190611500565b10155b15610b97578085856001600160401b031681518110610b7d57610b7d611519565b60200260200101819052508380610b939061152f565b9450505b505b5080610ba48161152f565b91505061087f565b50806001600160401b03166001600160401b03811115610bce57610bce6111b2565b604051908082528060200260200182016040528015610c0757816020015b610bf4610da7565b815260200190600190039081610bec5790505b50925060005b816001600160401b0316816001600160401b03161015610c835782816001600160401b031681518110610c4257610c42611519565b602002602001015184826001600160401b031681518110610c6557610c65611519565b60200260200101819052508080610c7b9061152f565b915050610c0d565b5050509392505050565b6060610c976105e1565b6001600160401b0316836001600160401b031610610ce75760405162461bcd60e51b81526020600482015260096024820152680d8c2e6e892dcc8caf60bb1b604482015260640160405180910390fd5b610d0d610cf5846001611623565b6001600160401b0316836001600160401b0316610d8f565b6001600160401b03811115610d2457610d246111b2565b604051908082528060200260200182016040528015610d5d57816020015b610d4a610da7565b815260200190600190039081610d425790505b5090505b92915050565b6000610d6182608001516101200151836060015184608001516101000151610d8f9190611643565b6000818310610d9e5781610da0565b825b9392505050565b6040805160c08082018352600080835260208084018290528385018290526060808501839052855161016081018752838152918201839052948101829052938401819052608084810182905260a0850182905291840181905260e08401819052610100840181905261012084018190526101408401529091908201908152602001610e796040518060c00160405280600063ffffffff16815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b905290565b6001600160a01b0381168114610e9357600080fd5b50565b6001600160401b0381168114610e9357600080fd5b600080600060608486031215610ec057600080fd5b8335610ecb81610e7e565b92506020840135610edb81610e96565b91506040840135610eeb81610e96565b809150509250925092565b60005b83811015610f11578181015183820152602001610ef9565b50506000910152565b63ffffffff81511682526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a085015280518060c0860152610f818160e0870160208501610ef6565b601f01601f19169390930160e0019392505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561111657888303603f19018552815180516001600160401b031684528781015163ffffffff908116898601528782015181168886015260608083015181870152608080840151805190931681880152610200928b81015160a061102b818b018363ffffffff169052565b8c830151915060c0611044818c018463ffffffff169052565b948301519460e0925061105e8b84018763ffffffff169052565b9383015194506101009361107c8b8601876001600160a01b03169052565b818401519550610120611099818d01886001600160a01b03169052565b908401519550610140906110b78c8301886001600160a01b03169052565b928401516001600160a01b03166101608c0152938301516101808b0152908201516101a08a01529101516101c088015292909201516101e08601829052915061110281860183610f1a565b968901969450505090860190600101610fbd565b509098975050505050505050565b60006020828403121561113657600080fd5b8135610da081610e7e565b805163ffffffff8116811461115557600080fd5b919050565b60006020828403121561116c57600080fd5b610da082611141565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038281168282160390808211156111ab576111ab611175565b5092915050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b03811182821017156111ea576111ea6111b2565b60405290565b60405161016081016001600160401b03811182821017156111ea576111ea6111b2565b604051601f8201601f191681016001600160401b038111828210171561123b5761123b6111b2565b604052919050565b805161115581610e7e565b600060c0828403121561126057600080fd5b6112686111c8565b905061127382611141565b815260208083015161128481610e7e565b82820152604083015161129681610e7e565b80604084015250606083015160608301526080830151608083015260a08301516001600160401b03808211156112cb57600080fd5b818501915085601f8301126112df57600080fd5b8151818111156112f1576112f16111b2565b611303601f8201601f19168501611213565b9150808252868482850101111561131957600080fd5b61132881858401868601610ef6565b5060a084015250909392505050565b60006020828403121561134957600080fd5b81516001600160401b038082111561136057600080fd5b9083019081850361020081121561137657600080fd5b61137e6111c8565b835161138981610e96565b815261139760208501611141565b60208201526113a860408501611141565b60408201526060840151606082015261016080607f19840112156113cb57600080fd5b6113d36111f0565b92506113e160808601611141565b83526113ef60a08601611141565b602084015261140060c08601611141565b604084015261141160e08601611141565b6060840152610100611424818701611243565b6080850152610120611437818801611243565b60a086015261014061144a818901611243565b60c087015261145a848901611243565b60e0870152610180880151838701526101a0880151828701526101c088015181870152505050508160808201526101e084015191508282111561149c57600080fd5b6114a88783860161124e565b60a08201529695505050505050565b63ffffffff8181168382160190808211156111ab576111ab611175565b600063ffffffff808316818516818304811182151516156114f7576114f7611175565b02949350505050565b60006020828403121561151257600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b0380831681810361154b5761154b611175565b6001019392505050565b60006020828403121561156757600080fd5b8151610da081610e96565b6000602080838503121561158557600080fd5b82516001600160401b038082111561159c57600080fd5b818501915085601f8301126115b057600080fd5b8151818111156115c2576115c26111b2565b8060051b91506115d3848301611213565b81815291830184019184810190888411156115ed57600080fd5b938501935b83851015611617578451925061160783610e96565b82825293850193908501906115f2565b98975050505050505050565b6001600160401b038181168382160190808211156111ab576111ab611175565b81810381811115610d6157610d6161117556fea2646970667358221220af6f6a0b608beea5b35f180839ddcbfbabd1bfca0c3050d89cbeb11e6093317764736f6c63430008100033",
486
486
  "linkReferences": {},
487
487
  "deployedLinkReferences": {}
488
488
  }
@@ -14,9 +14,6 @@ export interface Config {
14
14
  minChunkSizeUsd: number;
15
15
  wToken: TokenData;
16
16
  }
17
- export declare const UniswapV2Config: Config;
18
- export declare const SushiSwapConfig: Config;
19
- export declare const QuickSwapConfig: Config;
20
17
  export declare const SpiritSwapConfig: Config;
21
18
  export declare const SpookySwapConfig: Config;
22
19
  export declare const nativeTokenAddresses: string[];
@@ -57,4 +54,16 @@ export declare const chainConfig: (chainId: number) => {
57
54
  symbol: string;
58
55
  logoUrl: string;
59
56
  };
57
+ } | {
58
+ chainId: number;
59
+ twapAddress: string;
60
+ lensAddress: string;
61
+ bidDelaySeconds: number;
62
+ minChunkSizeUsd: number;
63
+ wToken: {
64
+ address: string;
65
+ decimals: number;
66
+ symbol: string;
67
+ logoUrl: string;
68
+ };
60
69
  };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.chainConfig = exports.isNativeAddress = exports.nativeTokenAddresses = exports.SpookySwapConfig = exports.SpiritSwapConfig = exports.QuickSwapConfig = exports.SushiSwapConfig = exports.UniswapV2Config = void 0;
6
+ exports.chainConfig = exports.isNativeAddress = exports.nativeTokenAddresses = exports.SpookySwapConfig = exports.SpiritSwapConfig = void 0;
7
7
  const web3_candies_1 = require("@defi.org/web3-candies");
8
8
  const lodash_1 = __importDefault(require("lodash"));
9
9
  const ChainConfigs = {
@@ -35,8 +35,8 @@ const ChainConfigs = {
35
35
  },
36
36
  poly: {
37
37
  chainId: 137,
38
- twapAddress: "0x50482c3BDb5f257C04620C73F1Be9b30090E9e5D",
39
- lensAddress: "0xd209419e822E3d68929B33E2CB5A66Ea089005C6",
38
+ twapAddress: "",
39
+ lensAddress: "",
40
40
  bidDelaySeconds: 60,
41
41
  minChunkSizeUsd: 10,
42
42
  wToken: {
@@ -46,12 +46,42 @@ const ChainConfigs = {
46
46
  logoUrl: "https://tokens.1inch.io/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0.png",
47
47
  },
48
48
  },
49
+ avax: {
50
+ chainId: 43114,
51
+ twapAddress: "",
52
+ lensAddress: "",
53
+ bidDelaySeconds: 60,
54
+ minChunkSizeUsd: 10,
55
+ wToken: {
56
+ address: "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",
57
+ decimals: 18,
58
+ symbol: "WAVAX",
59
+ logoUrl: "https://tokens.1inch.io/0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7.png",
60
+ },
61
+ },
49
62
  };
50
- exports.UniswapV2Config = Object.assign(Object.assign({}, ChainConfigs.eth), { partner: "UniswapV2", exchangeAddress: "0xE83df5BfA9F14a84e550c38c4ec505cB22C6A0d7" });
51
- exports.SushiSwapConfig = Object.assign(Object.assign({}, ChainConfigs.eth), { partner: "SushiSwap", exchangeAddress: "0x72a18A408e329E7052d08aA0746243Dc30Ad2530" });
52
- exports.QuickSwapConfig = Object.assign(Object.assign({}, ChainConfigs.poly), { partner: "QuickSwap", exchangeAddress: "0xeFE1B6096838949156e5130604434A2a13c68C68" });
63
+ // export const UniswapV2Config: Config = {
64
+ // ...ChainConfigs.eth,
65
+ // partner: "UniswapV2",
66
+ // exchangeAddress: "0xE83df5BfA9F14a84e550c38c4ec505cB22C6A0d7",
67
+ // };
68
+ // export const SushiSwapConfig: Config = {
69
+ // ...ChainConfigs.eth,
70
+ // partner: "SushiSwap",
71
+ // exchangeAddress: "0x72a18A408e329E7052d08aA0746243Dc30Ad2530",
72
+ // };
73
+ // export const QuickSwapConfig: Config = {
74
+ // ...ChainConfigs.poly,
75
+ // partner: "QuickSwap",
76
+ // exchangeAddress: "0xeFE1B6096838949156e5130604434A2a13c68C68",
77
+ // };
53
78
  exports.SpiritSwapConfig = Object.assign(Object.assign({}, ChainConfigs.ftm), { partner: "SpiritSwap", exchangeAddress: "0xAd19179201be5A51D1cBd3bB2fC651BB05822404" });
54
79
  exports.SpookySwapConfig = Object.assign(Object.assign({}, ChainConfigs.ftm), { partner: "SpookySwap", exchangeAddress: "0x37F427DA0D12Fe2C80aCa09EE08e7e92A1B2B114" });
80
+ // export const PangolinConfig: Config = {
81
+ // ...ChainConfigs.avax,
82
+ // partner: "Pangolin",
83
+ // exchangeAddress: "",
84
+ // };
55
85
  exports.nativeTokenAddresses = [
56
86
  web3_candies_1.zeroAddress,
57
87
  "0x0000000000000000000000000000000000001010",
package/dist/src/lib.d.ts CHANGED
@@ -23,68 +23,17 @@ export declare class TWAPLib {
23
23
  orderProgress: (order: Order) => BN;
24
24
  status: (order: Order) => Status;
25
25
  makerBalance(token: TokenData): Promise<BN>;
26
- wrapNativeToken(amount: BN.Value): Promise<any>;
26
+ wrapNativeToken(amount: BN.Value, priorityFeePerGas?: BN.Value, maxFeePerGas?: BN.Value): Promise<any>;
27
27
  waitForConfirmation<T>(fn: () => Promise<T>): Promise<T>;
28
28
  hasAllowance(srcToken: TokenData, amount: BN.Value): Promise<boolean>;
29
- approve(srcToken: TokenData, amount: BN.Value): Promise<void>;
29
+ approve(srcToken: TokenData, amount: BN.Value, priorityFeePerGas?: BN.Value, maxFeePerGas?: BN.Value): Promise<void>;
30
30
  validateOrderInputs(srcToken: TokenData, dstToken: TokenData, srcAmount: BN.Value, srcChunkAmount: BN.Value, dstMinChunkAmountOut: BN.Value, deadline: BN.Value, fillDelaySeconds: BN.Value, srcUsd: BN.Value): OrderInputValidation;
31
- submitOrder(srcToken: TokenData, dstToken: TokenData, srcAmount: BN.Value, srcChunkAmount: BN.Value, dstMinChunkAmountOut: BN.Value, deadline: number, fillDelaySeconds: number, srcUsd: BN.Value): Promise<number>;
31
+ submitOrder(srcToken: TokenData, dstToken: TokenData, srcAmount: BN.Value, srcChunkAmount: BN.Value, dstMinChunkAmountOut: BN.Value, deadline: number, fillDelaySeconds: number, srcUsd: BN.Value, priorityFeePerGas?: BN.Value, maxFeePerGas?: BN.Value): Promise<number>;
32
32
  getOrder(id: number): Promise<Order>;
33
- cancelOrder(id: number): Promise<void>;
34
- getAllOrders(): Promise<{
35
- id: number;
36
- status: number;
37
- filledTime: number;
38
- srcFilledAmount: BN;
39
- ask: {
40
- time: number;
41
- deadline: number;
42
- bidDelay: number;
43
- fillDelay: number;
44
- maker: any;
45
- exchange: any;
46
- srcToken: any;
47
- dstToken: any;
48
- srcAmount: BN;
49
- srcBidAmount: BN;
50
- dstMinAmount: BN;
51
- };
52
- bid: {
53
- time: number;
54
- taker: any;
55
- exchange: any;
56
- dstAmount: BN;
57
- dstFee: BN;
58
- data: any;
59
- };
60
- }[]>;
61
- parseOrder(r: any): {
62
- id: number;
63
- status: number;
64
- filledTime: number;
65
- srcFilledAmount: BN;
66
- ask: {
67
- time: number;
68
- deadline: number;
69
- bidDelay: number;
70
- fillDelay: number;
71
- maker: any;
72
- exchange: any;
73
- srcToken: any;
74
- dstToken: any;
75
- srcAmount: BN;
76
- srcBidAmount: BN;
77
- dstMinAmount: BN;
78
- };
79
- bid: {
80
- time: number;
81
- taker: any;
82
- exchange: any;
83
- dstAmount: BN;
84
- dstFee: BN;
85
- data: any;
86
- };
87
- };
33
+ cancelOrder(id: number, priorityFeePerGas?: BN.Value, maxFeePerGas?: BN.Value): Promise<void>;
34
+ getAllOrders(): Promise<Order[]>;
35
+ private sendTx;
36
+ parseOrder(r: any): Order;
88
37
  }
89
38
  export interface Order {
90
39
  id: number;
package/dist/src/lib.js CHANGED
@@ -42,7 +42,7 @@ class TWAPLib {
42
42
  .minus((0, bignumber_js_1.default)(this.config.bidDelaySeconds * 1000)), 0).toNumber();
43
43
  this.dstMinAmountOut = (srcToken, dstToken, srcChunkAmount, limitDstPriceFor1Src, isMarketOrder) => isMarketOrder
44
44
  ? (0, bignumber_js_1.default)(1)
45
- : (0, web3_candies_1.convertDecimals)((0, bignumber_js_1.default)(srcChunkAmount).times(limitDstPriceFor1Src), srcToken.decimals, dstToken.decimals).integerValue(bignumber_js_1.default.ROUND_FLOOR);
45
+ : bignumber_js_1.default.max(1, (0, web3_candies_1.convertDecimals)((0, bignumber_js_1.default)(srcChunkAmount).times(limitDstPriceFor1Src), srcToken.decimals, dstToken.decimals).integerValue(bignumber_js_1.default.ROUND_FLOOR));
46
46
  this.isMarketOrder = (order) => order.ask.dstMinAmount.lte(1);
47
47
  this.orderProgress = (order) => order.srcFilledAmount.div(order.ask.srcAmount);
48
48
  this.status = (order) => order.status > Date.now() / 1000
@@ -64,11 +64,9 @@ class TWAPLib {
64
64
  return (0, web3_candies_1.erc20)(token.symbol, token.address, token.decimals).methods.balanceOf(this.maker).call().then(bignumber_js_1.default);
65
65
  });
66
66
  }
67
- wrapNativeToken(amount) {
67
+ wrapNativeToken(amount, priorityFeePerGas, maxFeePerGas) {
68
68
  return __awaiter(this, void 0, void 0, function* () {
69
- return (0, web3_candies_1.erc20)(this.config.wToken.symbol, this.config.wToken.address, this.config.wToken.decimals, web3_candies_1.iwethabi)
70
- .methods.deposit()
71
- .send({ from: this.maker, value: (0, bignumber_js_1.default)(amount).toFixed(0) });
69
+ return yield this.sendTx((0, web3_candies_1.erc20)(this.config.wToken.symbol, this.config.wToken.address, this.config.wToken.decimals, web3_candies_1.iwethabi).methods.deposit(), priorityFeePerGas, maxFeePerGas, amount);
72
70
  });
73
71
  }
74
72
  waitForConfirmation(fn) {
@@ -88,10 +86,10 @@ class TWAPLib {
88
86
  return allowance.gte(amount);
89
87
  });
90
88
  }
91
- approve(srcToken, amount) {
89
+ approve(srcToken, amount, priorityFeePerGas, maxFeePerGas) {
92
90
  return __awaiter(this, void 0, void 0, function* () {
93
91
  const token = (0, web3_candies_1.erc20)(srcToken.symbol, srcToken.address, srcToken.decimals);
94
- yield token.methods.approve(this.config.twapAddress, amount.toString()).send({ from: this.maker });
92
+ yield this.sendTx(token.methods.approve(this.config.twapAddress, amount.toString()), priorityFeePerGas, maxFeePerGas);
95
93
  });
96
94
  }
97
95
  validateOrderInputs(srcToken, dstToken, srcAmount, srcChunkAmount, dstMinChunkAmountOut, deadline, fillDelaySeconds, srcUsd) {
@@ -116,14 +114,12 @@ class TWAPLib {
116
114
  return OrderInputValidation.invalidSmallestSrcChunkUsd;
117
115
  return OrderInputValidation.valid;
118
116
  }
119
- submitOrder(srcToken, dstToken, srcAmount, srcChunkAmount, dstMinChunkAmountOut, deadline, fillDelaySeconds, srcUsd) {
117
+ submitOrder(srcToken, dstToken, srcAmount, srcChunkAmount, dstMinChunkAmountOut, deadline, fillDelaySeconds, srcUsd, priorityFeePerGas, maxFeePerGas) {
120
118
  return __awaiter(this, void 0, void 0, function* () {
121
119
  let validation = this.validateOrderInputs(srcToken, dstToken, srcAmount, srcChunkAmount, dstMinChunkAmountOut, deadline, fillDelaySeconds, srcUsd);
122
120
  if (validation !== OrderInputValidation.valid)
123
121
  throw new Error(`invalid inputs: ${validation}`);
124
- const tx = yield this.twap.methods
125
- .ask(this.config.exchangeAddress, srcToken.address, dstToken.address, (0, bignumber_js_1.default)(srcAmount).toFixed(0), (0, bignumber_js_1.default)(srcChunkAmount).toFixed(0), (0, bignumber_js_1.default)(dstMinChunkAmountOut).toFixed(0), (0, bignumber_js_1.default)(deadline).div(1000).toFixed(0), (0, bignumber_js_1.default)(this.config.bidDelaySeconds).toFixed(0), (0, bignumber_js_1.default)(fillDelaySeconds).toFixed(0))
126
- .send({ from: this.maker });
122
+ const tx = yield this.sendTx(this.twap.methods.ask(this.config.exchangeAddress, srcToken.address, dstToken.address, (0, bignumber_js_1.default)(srcAmount).toFixed(0), (0, bignumber_js_1.default)(srcChunkAmount).toFixed(0), (0, bignumber_js_1.default)(dstMinChunkAmountOut).toFixed(0), (0, bignumber_js_1.default)(deadline).div(1000).toFixed(0), (0, bignumber_js_1.default)(this.config.bidDelaySeconds).toFixed(0), (0, bignumber_js_1.default)(fillDelaySeconds).toFixed(0)), priorityFeePerGas, maxFeePerGas);
127
123
  const events = (0, web3_candies_1.parseEvents)(tx, this.twap.options.jsonInterface);
128
124
  return Number(events[0].returnValues.id);
129
125
  });
@@ -133,9 +129,9 @@ class TWAPLib {
133
129
  return this.parseOrder(yield this.twap.methods.order(id).call());
134
130
  });
135
131
  }
136
- cancelOrder(id) {
132
+ cancelOrder(id, priorityFeePerGas, maxFeePerGas) {
137
133
  return __awaiter(this, void 0, void 0, function* () {
138
- yield this.twap.methods.cancel(id).send({ from: this.maker });
134
+ yield this.sendTx(this.twap.methods.cancel(id), priorityFeePerGas, maxFeePerGas);
139
135
  });
140
136
  }
141
137
  getAllOrders() {
@@ -143,6 +139,18 @@ class TWAPLib {
143
139
  return lodash_1.default.map(yield this.lens.methods.makerOrders(this.maker).call(), (o) => this.parseOrder(o));
144
140
  });
145
141
  }
142
+ sendTx(tx, priorityFeePerGas, maxFeePerGas, amount) {
143
+ return __awaiter(this, void 0, void 0, function* () {
144
+ const gas = yield tx.estimateGas();
145
+ return yield tx.send({
146
+ from: this.maker,
147
+ gas: Math.floor(gas * 1.2),
148
+ maxPriorityFeePerGas: priorityFeePerGas ? (0, bignumber_js_1.default)(priorityFeePerGas).toFixed(0) : undefined,
149
+ maxFeePerGas: maxFeePerGas ? (0, bignumber_js_1.default)(maxFeePerGas).toFixed(0) : undefined,
150
+ value: amount ? (0, bignumber_js_1.default)(amount).toFixed(0) : undefined,
151
+ });
152
+ });
153
+ }
146
154
  parseOrder(r) {
147
155
  var _a, _b, _c, _d, _e, _f;
148
156
  return {
@@ -2,10 +2,12 @@ import BN from "bignumber.js";
2
2
  import { TokenData } from "./configs";
3
3
  export declare namespace Paraswap {
4
4
  enum OnlyDex {
5
+ UniSwapV2 = "Uniswap",
6
+ SushiSwap = "SushiSwap",
7
+ QuickSwap = "QuickSwap",
5
8
  SpiritSwap = "SpiritSwap,SpiritSwapV2",
6
9
  SpookySwap = "SpookySwap",
7
- Quickswap = "Quickswap",
8
- Sushiswap = "Sushiswap"
10
+ Pangolin = "PangolinDex"
9
11
  }
10
12
  interface ParaswapRoute {
11
13
  blockNumber: number;
@@ -29,6 +31,12 @@ export declare namespace Paraswap {
29
31
  partner: string;
30
32
  maxImpactReached: boolean;
31
33
  }
34
+ function gasPrices(chainId: number): Promise<{
35
+ low: number;
36
+ medium: number;
37
+ high: number;
38
+ instant: number;
39
+ }>;
32
40
  function priceUsd(chainId: number, token: TokenData): Promise<BN>;
33
41
  function findRoute(chainId: number, src: TokenData, dst: TokenData, amountIn: BN.Value, onlyDex?: OnlyDex): Promise<ParaswapRoute>;
34
42
  function buildSwapData(paraswapRoute: ParaswapRoute, exchangeAdapter: string): Promise<string>;
@@ -14,7 +14,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.Paraswap = void 0;
16
16
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
17
- const axios_1 = __importDefault(require("axios"));
18
17
  const web3_candies_1 = require("@defi.org/web3-candies");
19
18
  const configs_1 = require("./configs");
20
19
  var Paraswap;
@@ -22,11 +21,25 @@ var Paraswap;
22
21
  const URL = "https://apiv5.paraswap.io";
23
22
  let OnlyDex;
24
23
  (function (OnlyDex) {
24
+ OnlyDex["UniSwapV2"] = "Uniswap";
25
+ OnlyDex["SushiSwap"] = "SushiSwap";
26
+ OnlyDex["QuickSwap"] = "QuickSwap";
25
27
  OnlyDex["SpiritSwap"] = "SpiritSwap,SpiritSwapV2";
26
28
  OnlyDex["SpookySwap"] = "SpookySwap";
27
- OnlyDex["Quickswap"] = "Quickswap";
28
- OnlyDex["Sushiswap"] = "Sushiswap";
29
+ OnlyDex["Pangolin"] = "PangolinDex";
29
30
  })(OnlyDex = Paraswap.OnlyDex || (Paraswap.OnlyDex = {}));
31
+ function gasPrices(chainId) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ //
34
+ return {
35
+ low: 0,
36
+ medium: 0,
37
+ high: 0,
38
+ instant: 0,
39
+ };
40
+ });
41
+ }
42
+ Paraswap.gasPrices = gasPrices;
30
43
  function priceUsd(chainId, token) {
31
44
  return __awaiter(this, void 0, void 0, function* () {
32
45
  const _token = (0, configs_1.isNativeAddress)(token.address) ? (0, configs_1.chainConfig)(chainId).wToken : token;
@@ -49,28 +62,32 @@ var Paraswap;
49
62
  // partner: "chucknorris",
50
63
  // otherExchangePrices: "true",
51
64
  });
52
- const response = yield axios_1.default.get(`${URL}/prices/?${params}`);
65
+ const response = yield fetch(`${URL}/prices/?${params}`);
53
66
  if (response.status < 200 || response.status >= 400)
54
67
  throw new Error(`${response.statusText}`);
55
- return response.data.priceRoute;
68
+ return (yield response.json()).priceRoute;
56
69
  });
57
70
  }
58
71
  Paraswap.findRoute = findRoute;
59
72
  function buildSwapData(paraswapRoute, exchangeAdapter) {
60
73
  return __awaiter(this, void 0, void 0, function* () {
61
- const response = yield axios_1.default.post(`${URL}/transactions/${paraswapRoute.network}?ignoreChecks=true`, {
62
- priceRoute: paraswapRoute,
63
- srcToken: paraswapRoute.srcToken,
64
- destToken: paraswapRoute.destToken,
65
- srcDecimals: paraswapRoute.srcDecimals,
66
- destDecimals: paraswapRoute.destDecimals,
67
- srcAmount: paraswapRoute.srcAmount,
68
- destAmount: "1",
69
- userAddress: exchangeAdapter,
74
+ const response = yield fetch(`${URL}/transactions/${paraswapRoute.network}?ignoreChecks=true`, {
75
+ method: "POST",
76
+ body: JSON.stringify({
77
+ priceRoute: paraswapRoute,
78
+ srcToken: paraswapRoute.srcToken,
79
+ destToken: paraswapRoute.destToken,
80
+ srcDecimals: paraswapRoute.srcDecimals,
81
+ destDecimals: paraswapRoute.destDecimals,
82
+ srcAmount: paraswapRoute.srcAmount,
83
+ destAmount: "1",
84
+ userAddress: exchangeAdapter,
85
+ }),
70
86
  });
71
87
  if (response.status < 200 || response.status >= 400)
72
88
  throw new Error(`${response.statusText}`);
73
- return (0, web3_candies_1.web3)().eth.abi.encodeParameters(["uint256", "bytes"], [paraswapRoute.destAmount, response.data.data]);
89
+ const swapData = (yield response.json()).data;
90
+ return (0, web3_candies_1.web3)().eth.abi.encodeParameters(["uint256", "bytes"], [paraswapRoute.destAmount, swapData]);
74
91
  });
75
92
  }
76
93
  Paraswap.buildSwapData = buildSwapData;
@@ -4,7 +4,7 @@ import type BigNumber from "bignumber.js";
4
4
  import type { ContractOptions } from "web3-eth-contract";
5
5
  import type { EventLog } from "web3-core";
6
6
  import type { EventEmitter } from "events";
7
- import type { Callback, NonPayableTransactionObject, BlockType, BaseContract } from "../../types";
7
+ import type { Callback, NonPayableTransactionObject, BlockType, BaseContract } from "../types";
8
8
  export interface EventOptions {
9
9
  filter?: object;
10
10
  fromBlock?: BlockType;
@@ -10,7 +10,7 @@ export interface EventOptions {
10
10
  fromBlock?: BlockType;
11
11
  topics?: string[];
12
12
  }
13
- export declare type OrderBid = ContractEventLog<{
13
+ export type OrderBid = ContractEventLog<{
14
14
  id: string;
15
15
  maker: string;
16
16
  exchange: string;
@@ -22,7 +22,7 @@ export declare type OrderBid = ContractEventLog<{
22
22
  3: string;
23
23
  4: [string, string, string, string, string, string];
24
24
  }>;
25
- export declare type OrderCanceled = ContractEventLog<{
25
+ export type OrderCanceled = ContractEventLog<{
26
26
  id: string;
27
27
  maker: string;
28
28
  sender: string;
@@ -30,7 +30,7 @@ export declare type OrderCanceled = ContractEventLog<{
30
30
  1: string;
31
31
  2: string;
32
32
  }>;
33
- export declare type OrderCompleted = ContractEventLog<{
33
+ export type OrderCompleted = ContractEventLog<{
34
34
  id: string;
35
35
  maker: string;
36
36
  exchange: string;
@@ -40,7 +40,7 @@ export declare type OrderCompleted = ContractEventLog<{
40
40
  2: string;
41
41
  3: string;
42
42
  }>;
43
- export declare type OrderCreated = ContractEventLog<{
43
+ export type OrderCreated = ContractEventLog<{
44
44
  id: string;
45
45
  maker: string;
46
46
  exchange: string;
@@ -74,7 +74,7 @@ export declare type OrderCreated = ContractEventLog<{
74
74
  string
75
75
  ];
76
76
  }>;
77
- export declare type OrderFilled = ContractEventLog<{
77
+ export type OrderFilled = ContractEventLog<{
78
78
  id: string;
79
79
  maker: string;
80
80
  exchange: string;
@@ -145,6 +145,7 @@ export interface TWAP extends BaseContract {
145
145
  }>;
146
146
  cancel(id: number | string | BN | BigNumber): NonPayableTransactionObject<void>;
147
147
  fill(id: number | string | BN | BigNumber): NonPayableTransactionObject<void>;
148
+ iweth(): NonPayableTransactionObject<string>;
148
149
  length(): NonPayableTransactionObject<string>;
149
150
  makerOrders(arg0: string, arg1: number | string | BN | BigNumber): NonPayableTransactionObject<string>;
150
151
  order(id: number | string | BN | BigNumber): NonPayableTransactionObject<[
@@ -5,4 +5,5 @@ export type { periphery };
5
5
  import type * as test from "./test";
6
6
  export type { test };
7
7
  export type { IExchange } from "./IExchange";
8
+ export type { IWETH } from "./IWETH";
8
9
  export type { TWAP } from "./TWAP";
@@ -10,7 +10,7 @@ export interface EventOptions {
10
10
  fromBlock?: BlockType;
11
11
  topics?: string[];
12
12
  }
13
- export declare type OwnershipTransferred = ContractEventLog<{
13
+ export type OwnershipTransferred = ContractEventLog<{
14
14
  previousOwner: string;
15
15
  newOwner: string;
16
16
  0: string;
@@ -27,7 +27,6 @@ export interface Taker extends BaseContract {
27
27
  rescue(token: string): NonPayableTransactionObject<void>;
28
28
  transferOwnership(newOwner: string): NonPayableTransactionObject<void>;
29
29
  twap(): NonPayableTransactionObject<string>;
30
- weth(): NonPayableTransactionObject<string>;
31
30
  };
32
31
  events: {
33
32
  OwnershipTransferred(cb?: Callback<OwnershipTransferred>): EventEmitter;
@@ -1,3 +1,2 @@
1
- export type { IWETH } from "./IWETH";
2
1
  export type { Lens } from "./Lens";
3
2
  export type { Taker } from "./Taker";
@@ -10,7 +10,7 @@ export interface EventOptions {
10
10
  fromBlock?: BlockType;
11
11
  topics?: string[];
12
12
  }
13
- export declare type Approval = ContractEventLog<{
13
+ export type Approval = ContractEventLog<{
14
14
  owner: string;
15
15
  spender: string;
16
16
  value: string;
@@ -18,7 +18,7 @@ export declare type Approval = ContractEventLog<{
18
18
  1: string;
19
19
  2: string;
20
20
  }>;
21
- export declare type Transfer = ContractEventLog<{
21
+ export type Transfer = ContractEventLog<{
22
22
  from: string;
23
23
  to: string;
24
24
  value: string;
@@ -14,7 +14,7 @@ export interface EventOptions {
14
14
  fromBlock?: BlockType;
15
15
  topics?: string[];
16
16
  }
17
- export declare type Callback<T> = (error: Error, result: T) => void;
17
+ export type Callback<T> = (error: Error, result: T) => void;
18
18
  export interface ContractEventLog<T> extends EventLog {
19
19
  returnValues: T;
20
20
  }
@@ -51,5 +51,5 @@ export interface PayableTransactionObject<T> {
51
51
  estimateGas(tx?: PayableTx): Promise<number>;
52
52
  encodeABI(): string;
53
53
  }
54
- export declare type BlockType = "latest" | "pending" | "genesis" | "earliest" | number | BN | BigNumber;
55
- export declare type BaseContract = Omit<Contract, "clone" | "once">;
54
+ export type BlockType = "latest" | "pending" | "genesis" | "earliest" | number | BN | BigNumber;
55
+ export type BaseContract = Omit<Contract, "clone" | "once">;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbs-network/twap",
3
- "version": "1.5.7",
3
+ "version": "1.5.9-0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/orbs-network/twap.git"