11 txs
6.7k calls
constructor
constructor(address _pendleRegistry, address _ptToken, address _borrowPositionProxy, address _userVaultImplementation, address _dolomiteMargin)
functions
allowableCollateralMarketIds
purefunction allowableCollateralMarketIds() pure returns (uint256[])
allowableDebtMarketIds
purefunction allowableDebtMarketIds() pure returns (uint256[])
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
BORROW_POSITION_PROXY
viewfunction BORROW_POSITION_PROXY() view returns (address)
calculateVaultByAccount
viewfunction calculateVaultByAccount(address _account) view returns (address _vault)
decimals
viewfunction decimals() view returns (uint8)
DOLOMITE_MARGIN_OWNER
viewfunction DOLOMITE_MARGIN_OWNER() view returns (address)
DOLOMITE_MARGIN
viewfunction DOLOMITE_MARGIN() view returns (address)
DOLOMITE_REGISTRY
viewfunction DOLOMITE_REGISTRY() view returns (address)
getAccountByVault
viewfunction getAccountByVault(address _vault) view returns (address _account)
getProxyVaultInitCodeHash
purefunction getProxyVaultInitCodeHash() pure returns (bytes32)
getQueuedTransferByCursor
viewfunction getQueuedTransferByCursor(uint256 _transferCursor) view returns (tuple)
getVaultByAccount
viewfunction getVaultByAccount(address _account) view returns (address _vault)
isInitialized
viewfunction isInitialized() view returns (bool)
isIsolationAsset
purefunction isIsolationAsset() pure returns (bool)
isTokenConverterTrusted
viewfunction isTokenConverterTrusted(address _tokenConverter) view returns (bool)
marketId
viewfunction marketId() view returns (uint256)
name
viewfunction name() view returns (string)
pendleRegistry
viewfunction pendleRegistry() view returns (address)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
transferCursor
viewfunction transferCursor() view returns (uint256)
UNDERLYING_TOKEN
viewfunction UNDERLYING_TOKEN() view returns (address)
userVaultImplementation
viewfunction userVaultImplementation() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
createVault
nonpayablefunction createVault(address _account) returns (address)
createVaultAndDepositIntoDolomiteMargin
nonpayablefunction createVaultAndDepositIntoDolomiteMargin(uint256 _toAccountNumber, uint256 _amountWei) returns (address)
depositIntoDolomiteMargin
nonpayablefunction depositIntoDolomiteMargin(uint256 _toAccountNumber, uint256 _amountWei)
depositOtherTokenIntoDolomiteMarginForVaultOwner
nonpayablefunction depositOtherTokenIntoDolomiteMarginForVaultOwner(uint256 _toAccountNumber, uint256 _otherMarketId, uint256 _amountWei)
enqueueTransferFromDolomiteMargin
nonpayablefunction enqueueTransferFromDolomiteMargin(address _vault, uint256 _amountWei)
enqueueTransferIntoDolomiteMargin
nonpayablefunction enqueueTransferIntoDolomiteMargin(address _vault, uint256 _amountWei)
ownerInitialize
nonpayablefunction ownerInitialize(address[] _tokenConverters)
ownerSetIsTokenConverterTrusted
nonpayablefunction ownerSetIsTokenConverterTrusted(address _tokenConverter, bool _isTrusted)
ownerSetPendleRegistry
nonpayablefunction ownerSetPendleRegistry(address _pendleRegistry)
ownerSetUserVaultImplementation
nonpayablefunction ownerSetUserVaultImplementation(address _userVaultImplementation)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
withdrawFromDolomiteMargin
nonpayablefunction withdrawFromDolomiteMargin(uint256 _fromAccountNumber, uint256 _amountWei)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Initialized
event Initialized()
PendleRegistrySet
event PendleRegistrySet(address _pendleRETHRegistry)
TokenConverterSet
event TokenConverterSet(address indexed tokenConverter, bool isTrusted)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
TransferQueued
event TransferQueued(uint256 indexed transferCursor, address from, address to, uint256 amountWei, address vault)
UserVaultImplementationSet
event UserVaultImplementationSet(address indexed previousUserVaultImplementation, address indexed newUserVaultImplementation)
VaultCreated
event VaultCreated(address indexed account, address vault)
errors
No errors.
creation bytecode
0x6101006040523480156200001257600080fd5b5060405162006669380380620066698339810160408190526200003591620009a2565b838383876001600160a01b031663bd12584f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200007257600080fd5b505afa15801562000087573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ad919062000a4b565b84846001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015620000e857600080fd5b505afa158015620000fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000127919081019062000ba5565b60405160200162000139919062000c0a565b604051602081830303815290604052856001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200018257600080fd5b505afa15801562000197573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001c1919081019062000ba5565b604051602001620001d3919062000c42565b604051602081830303815290604052866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021c57600080fd5b505afa15801562000231573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000257919062000c6c565b6001600160a01b03841660805262000271838383620002eb565b5050506001600160a01b0380831660e05285811660a05284811660c0526005805491851661010002610100600160a81b0319909216919091179055620002b961dead6200032f565b5050600c80546001600160a01b0319166001600160a01b039a909a16999099179098555062000f809650505050505050565b825162000300906003906020860190620008b5565b50815162000316906004906020850190620008b5565b506005805460ff191660ff929092169190911790555050565b60006200039160006001600160a01b0316836001600160a01b031614157f49736f6c6174696f6e4d6f64655661756c74466163746f7279000000000000006e125b9d985b1a59081858d8dbdd5b9d608a1b6200053260201b620014cf1760201c565b6001600160a01b038281166000908152600a602090815260409091205462000409921615907f49736f6c6174696f6e4d6f64655661756c74466163746f727900000000000000907f5661756c7420616c72656164792065786973747300000000000000000000000090620014cf62000532821b17901c565b60006200047160008460405160200162000424919062000cc6565b60405160208183030381529060405280519060200120604051806020016200044c9062000944565b6020820181038252601f19601f820116604052506200059e60201b620015361760201c565b90506001600160a01b0381166200048c576200048c62000cdd565b826001600160a01b03167f5d9c31ffa0fecffd7cf379989a3c7af252f0335e0d2a1320b55245912c781f5382604051620004c7919062000cfe565b60405180910390a26001600160a01b03808216600081815260096020908152604080832080549589166001600160a01b03199687168117909155808452600a909252909120805490931690911790915561dead146200052c576200052c83826200061f565b92915050565b8262000599576200054382620007f6565b6101d160f51b6200055483620007f6565b604051602001620005689392919062000d1f565b60408051601f198184030181529082905262461bcd60e51b8252620005909160040162000d8b565b60405180910390fd5b505050565b600083471015620005c35760405162461bcd60e51b8152600401620005909062000dd5565b8151620005e45760405162461bcd60e51b8152600401620005909062000e1a565b8282516020840186f590506001600160a01b038116620006185760405162461bcd60e51b8152600401620005909062000e61565b9392505050565b6001600160a01b038216158015906200064057506001600160a01b03811615155b6200064f576200064f62000cdd565b60405163189acdbd60e31b81526001600160a01b0382169063c4d66de8906200067d90859060040162000cfe565b600060405180830381600087803b1580156200069857600080fd5b505af1158015620006ad573d6000803e3d6000fd5b5050505060c0516001600160a01b031663f697ae998260016040518363ffffffff1660e01b8152600401620006e492919062000e7c565b600060405180830381600087803b158015620006ff57600080fd5b505af115801562000714573d6000803e3d6000fd5b5050505060e0516001600160a01b031663f68ebbbd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200075457600080fd5b505afa15801562000769573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200078f919062000a4b565b6001600160a01b03166305c4fdf983836040518363ffffffff1660e01b8152600401620007be92919062000e9b565b600060405180830381600087803b158015620007d957600080fd5b505af1158015620007ee573d6000803e3d6000fd5b505050505050565b60606000826040516020016200080d919062000ec1565b60408051601f19818403018152919052905060205b80156200089a5780620008358162000eee565b9150508181815181106200084d576200084d62000f08565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615620008945760006200088982600162000f1e565b835250909392505050565b62000822565b5060408051600080825260208201909252905b509392505050565b828054620008c39062000f4f565b90600052602060002090601f016020900481019282620008e7576000855562000932565b82601f106200090257805160ff191683800117855562000932565b8280016001018555821562000932579182015b828111156200093257825182559160200191906001019062000915565b506200094092915062000952565b5090565b610b378062005b3283390190565b5b8082111562000940576000815560010162000953565b60006001600160a01b0382166200052c565b620009868162000969565b81146200099257600080fd5b50565b80516200052c816200097b565b600080600080600060a08688031215620009bf57620009bf600080fd5b6000620009cd888862000995565b9550506020620009e08882890162000995565b9450506040620009f38882890162000995565b935050606062000a068882890162000995565b925050608062000a198882890162000995565b9150509295509295909350565b60006200052c8262000969565b620009868162000a26565b80516200052c8162000a33565b60006020828403121562000a625762000a62600080fd5b600062000a70848462000a3e565b949350505050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b038211171562000ab65762000ab662000a78565b6040525050565b600062000ac960405190565b905062000ad7828262000a8e565b919050565b60006001600160401b0382111562000af85762000af862000a78565b601f19601f83011660200192915050565b60005b8381101562000b2657818101518382015260200162000b0c565b8381111562000b36576000848401525b50505050565b600062000b5362000b4d8462000adc565b62000abd565b90508281526020810184848401111562000b705762000b70600080fd5b620008ad84828562000b09565b600082601f83011262000b935762000b93600080fd5b815162000a7084826020860162000b3c565b60006020828403121562000bbc5762000bbc600080fd5b81516001600160401b0381111562000bd75762000bd7600080fd5b62000a708482850162000b7d565b600062000bf0825190565b62000c0081856020860162000b09565b9290920192915050565b7f446f6c6f6d6974652049736f6c6174696f6e3a2000000000000000000000000081526000601482015b915062000618828462000be5565b601960fa1b815260006001820162000c34565b60ff811662000986565b80516200052c8162000c55565b60006020828403121562000c835762000c83600080fd5b600062000a70848462000c5f565b60006200052c8260601b90565b60006200052c8262000c91565b62000cc062000cba8262000969565b62000c9e565b82525050565b600062000cd4828462000cab565b50601401919050565b634e487b7160e01b600052600160045260246000fd5b62000cc08162000969565b602081016200052c828462000cf3565b6001600160f01b0319811662000cc0565b600062000d2d828662000be5565b915062000d3b828562000d0e565b60028201915062000d4d828462000be5565b95945050505050565b600062000d61825190565b80845260208401935062000d7a81856020860162000b09565b601f01601f19169290920192915050565b6020808252810162000618818462000d56565b601d81526000602082017f437265617465323a20696e73756666696369656e742062616c616e6365000000815291505b5060200190565b602080825281016200052c8162000d9e565b60208082527f437265617465323a2062797465636f6465206c656e677468206973207a65726f9101908152600062000dce565b602080825281016200052c8162000de7565b601981526000602082017f437265617465323a204661696c6564206f6e206465706c6f79000000000000008152915062000dce565b602080825281016200052c8162000e2c565b80151562000cc0565b6040810162000e8c828562000cf3565b62000618602083018462000e73565b6040810162000eab828562000cf3565b62000618602083018462000cf3565b8062000cc0565b600062000ecf828462000eba565b50602001919050565b634e487b7160e01b600052601160045260246000fd5b60008162000f005762000f0062000ed8565b506000190190565b634e487b7160e01b600052603260045260246000fd5b6000821982111562000f345762000f3462000ed8565b500190565b634e487b7160e01b600052602260045260246000fd5b60028104600182168062000f6457607f821691505b6020821081141562000f7a5762000f7a62000f39565b50919050565b60805160a05160c05160e051614b086200102a6000396000818161060c01526117f70152600081816103fa0152611785015260006103d201526000818161032d015281816107e80152818161089401528181610d3201528181610e0f01528181610e3c01528181610f480152818161101301528181611242015281816112700152818161140301528181611a8e0152818161216c015281816121df01526128c10152614b086000f3fe60806040523480156200001157600080fd5b50600436106200026d5760003560e01c80635b7490541162000155578063b01f61e111620000c7578063cbffd9211162000086578063cbffd921146200062e578063d143d5911462000638578063d3f5f0621462000642578063dd62ed3e146200064c578063ed4e3a35146200068857600080fd5b8063b01f61e1146200057a578063b4bd6f4614620005a9578063bc08373214620005c0578063c1090d5a14620005ef578063c6d20c85146200060657600080fd5b806389c32efb116200011457806389c32efb146200027257806395b5b196146200052957806395d89b411462000540578063a6e7d83f146200054a578063a9059cbb146200056357600080fd5b80635b749054146200049f5780636ed71ede14620004b657806370a0823114620004c057806372dcf67914620004ec578063816bbc2e146200050357600080fd5b806323b872dd11620001ef578063392e53cd11620001ae578063392e53cd14620004315780633c939dc11462000446578063516885be146200045d57806353769bbf146200047457806354441311146200048857600080fd5b806323b872dd146200039e578063260fa1a114620003b557806329db1be614620003cc5780632ee3d92f14620003f4578063313ce567146200041c57600080fd5b80630a3ee461116200023c5780630a3ee46114620002fb5780630d97c9fa146200031457806315c14a4a146200032b57806316774ba0146200035c57806318160ddd146200038b57600080fd5b8063037ec8c8146200027257806306fdde031462000296578063095ea7b314620002af57806309da2c5414620002d5575b600080fd5b604080516000815260208101918290526200028d9162002fea565b60405180910390f35b620002a062000690565b6040516200028d919062003061565b620002c6620002c0366004620030be565b6200072a565b6040516200028d91906200310a565b620002ec620002e63660046200311a565b62000746565b6040516200028d919062003152565b620003126200030c366004620031ba565b62000785565b005b62000312620003253660046200321e565b62000a34565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516200028d91906200327c565b620002c66200036d3660046200311a565b6001600160a01b03166000908152600b602052604090205460ff1690565b6002545b6040516200028d91906200328c565b620002c6620003af3660046200329c565b62000a87565b62000312620003c63660046200311a565b62000ab1565b620002ec7f000000000000000000000000000000000000000000000000000000000000000081565b6200034d7f000000000000000000000000000000000000000000000000000000000000000081565b60055460ff166040516200028d9190620032fe565b600554620002c690600160a81b900460ff1681565b62000312620004573660046200330e565b62000b16565b620003126200046e36600462003349565b62000dbf565b600c546200034d906001600160a01b031681565b6200031262000499366004620030be565b62000ea6565b62000312620004b0366004620030be565b62000f70565b6200038f60065481565b6200038f620004d13660046200311a565b6001600160a01b031660009081526020819052604090205490565b62000312620004fd3660046200311a565b6200103a565b6200051a620005143660046200336f565b62001123565b6040516200028d9190620033fb565b620003126200053a36600462003349565b620011f3565b620002a0620012d6565b600554620002ec9061010090046001600160a01b031681565b620002c662000574366004620030be565b620012e7565b620002ec6200058b3660046200311a565b6001600160a01b039081166000908152600a60205260409020541690565b620002ec620005ba3660046200311a565b620012f7565b620002ec620005d13660046200311a565b6001600160a01b039081166000908152600960205260409020541690565b620002ec6200060036600462003349565b62001345565b6200034d7f000000000000000000000000000000000000000000000000000000000000000081565b620002ec620013ff565b6200038f60075481565b6200038f6200149b565b6200038f6200065d3660046200340b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001620002c6565b606060038054620006a19062003470565b80601f0160208091040260200160405190810160405280929190818152602001828054620006cf9062003470565b8015620007205780601f10620006f45761010080835404028352916020019162000720565b820191906000526020600020905b8154815290600101906020018083116200070257829003601f168201915b5050505050905090565b6000336200073a818585620015b0565b60019150505b92915050565b600062000740826040516020016200075f9190620034d0565b604051602081830303815290604052805190602001206200077f6200149b565b6200166c565b3362000791816200167b565b600554620007d190600160a81b900460ff161560008051602062004ab383398151915272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b620014cf565b604051638fae3be160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638fae3be1906200081f90309060040162003152565b60206040518083038186803b1580156200083857600080fd5b505afa1580156200084d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008739190620034f4565b60068190556040516316b1f45f60e21b815262000954916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691635ac7d17c91620008c9916004016200328c565b60206040518083038186803b158015620008e257600080fd5b505afa158015620008f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200091d919062003526565b60008051602062004ab38339815191527f4d61726b65742063616e6e6f7420616c6c6f7720626f72726f77696e67000000620014cf565b61dead6000819052600a6020527f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb546200099891906001600160a01b0316620016de565b60005b82811015620009f157620009dc848483818110620009bd57620009bd6200354b565b9050602002016020810190620009d491906200311a565b6001620018f1565b80620009e88162003577565b9150506200099b565b506005805460ff60a81b1916600160a81b1790556040517f5daa87a0e9463431830481fd4b6e3403442dfb9a12b9c07597e9f61d50b633c890600090a15b505050565b60055462000a6f90600160a81b900460ff1660008051602062004ab38339815191526e139bdd081a5b9a5d1a585b1a5e9959608a1b620014cf565b3362000a7b816200167b565b62000a2f8383620018f1565b60003362000a978582856200199a565b62000aa4858585620019f2565b60019150505b9392505050565b3362000abd816200167b565b600c80546001600160a01b0319166001600160a01b0384161790556040517fe06bb3aa40c10f71cf0e0dc17d6f449f6efbc87668e14dc51db81ea21827655b9062000b0a90849062003152565b60405180910390a15050565b3360008181526009602052604090205462000b5e906001600160a01b0316151560008051602062004ab38339815191526c125b9d985b1a59081d985d5b1d609a1b8462001eef565b62000b9160065484141560008051602062004ab38339815191526d125b9d985b1a59081b585c9ad95d60921b8662001f3e565b60408051600280825260608201909252600091816020015b604080518082019091526000808252602082015281526020019060019003908162000ba95790505090506040518060400160405280336001600160a01b0316815260200160008152508160008151811062000c085762000c086200354b565b6020908102919091018101919091526040805180820182523360009081526009845291909120546001600160a01b0316815290810186905281518290600190811062000c585762000c586200354b565b602090810291909101015260408051600280825260608201909252600091816020015b62000c8562002ef9565b81526020019060019003908162000c7b57505060408051608081019091526001815290915062000ccf90600090879060208101838152602001600081526020018890523362001f71565b8160008151811062000ce55762000ce56200354b565b602002602001018190525062000d0b6000600187600062000d0560001990565b62001fdc565b8160018151811062000d215762000d216200354b565b602002602001018190525062000d547f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031663a67a6a4583836040518363ffffffff1660e01b815260040162000d8392919062003818565b600060405180830381600087803b15801562000d9e57600080fd5b505af115801562000db3573d6000803e3d6000fd5b50505050505050505050565b3360008181526009602052604090205462000e07906001600160a01b0316151560008051602062004ab38339815191526c125b9d985b1a59081d985d5b1d609a1b8462001eef565b3362000e36817f00000000000000000000000000000000000000000000000000000000000000008584620020fe565b62000ea07f000000000000000000000000000000000000000000000000000000000000000082838760065460405180608001604052806001151581526020016000600181111562000e8b5762000e8b62003595565b8152602001600081526020018a90526200232a565b50505050565b336000818152600b602052604090205462000ef69060ff1660008051602062004ab38339815191527f43616c6c6572206973206e6f74206120746f6b656e20636f6e766572746572008462001eef565b6001600160a01b03808416600090815260096020526040902054849162000f429116151560008051602062004ab38339815191526c125b9d985b1a59081d985d5b1d609a1b8462001eef565b62000ea07f0000000000000000000000000000000000000000000000000000000000000000338587620020fe565b336000818152600b602052604090205462000fc09060ff1660008051602062004ab38339815191527f43616c6c6572206973206e6f74206120746f6b656e20636f6e766572746572008462001eef565b6001600160a01b0380841660009081526009602052604090205484916200100c9116151560008051602062004ab38339815191526c125b9d985b1a59081d985d5b1d609a1b8462001eef565b62000ea0337f00000000000000000000000000000000000000000000000000000000000000008587620020fe565b6005546200107590600160a81b900460ff1660008051602062004ab38339815191526e139bdd081a5b9a5d1a585b1a5e9959608a1b620014cf565b3362001081816200167b565b620010c86001600160a01b038316151560008051602062004ab38339815191527f496e76616c6964207573657220696d706c656d656e746174696f6e0000000000620014cf565b600580546001600160a01b03848116610100818102610100600160a81b031985161790945560405193909204169182907fdc5a954098cef71f25bbe48bbd58cd5866495daacabf32492424363af66dd01890600090a3505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526200118f60075483111560008051602062004ab38339815191527f496e76616c6964207472616e7366657220637572736f72000000000000000000620014cf565b50600090815260086020908152604091829020825160a08101845281546001600160a01b0390811682526001830154811693820193909352600282015493810193909352600301549081166060830152600160a01b900460ff161515608082015290565b336000818152600960205260409020546200123b906001600160a01b0316151560008051602062004ab38339815191526c125b9d985b1a59081d985d5b1d609a1b8462001eef565b336200126a7f0000000000000000000000000000000000000000000000000000000000000000828584620020fe565b62000ea07f0000000000000000000000000000000000000000000000000000000000000000828684600654604051806080016040528060001515815260200160006001811115620012bf57620012bf62003595565b8152602001600081526020018a905260016200247f565b606060048054620006a19062003470565b6000336200073a818585620019f2565b6005546000906200133590600160a81b900460ff1660008051602062004ab38339815191526e139bdd081a5b9a5d1a585b1a5e9959608a1b620014cf565b62000740826200264a565b919050565b6005546000906200138390600160a81b900460ff1660008051602062004ab38339815191526e139bdd081a5b9a5d1a585b1a5e9959608a1b620014cf565b600062001390336200264a565b604051637d49eb4d60e11b81529091506001600160a01b0382169063fa93d69a90620013c3908790879060040162003841565b600060405180830381600087803b158015620013de57600080fd5b505af1158015620013f3573d6000803e3d6000fd5b50929695505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200145b57600080fd5b505afa15801562001470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200149691906200386d565b905090565b600060405180602001620014af9062002f70565b6020820181038252601f19601f8201166040525080519060200120905090565b8262000a2f57620014e082620027eb565b6101d160f51b620014f183620027eb565b6040516020016200150593929190620038c8565b60408051601f198184030181529082905262461bcd60e51b82526200152d9160040162003061565b60405180910390fd5b6000834710156200155b5760405162461bcd60e51b81526004016200152d906200392d565b81516200157c5760405162461bcd60e51b81526004016200152d9062003972565b8282516020840186f590506001600160a01b03811662000aaa5760405162461bcd60e51b81526004016200152d90620039b9565b6001600160a01b038316620015d95760405162461bcd60e51b81526004016200152d9062003a0f565b6001600160a01b038216620016025760405162461bcd60e51b81526004016200152d9062003a61565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906200165f9085906200328c565b60405180910390a3505050565b600062000aaa83833062002892565b620016db62001689620013ff565b6001600160a01b0316826001600160a01b0316147127b7363ca237b637b6b4ba32a6b0b933b4b760711b7f43616c6c6572206973206e6f74206f776e6572206f6620446f6c6f6d697465008462001eef565b50565b6001600160a01b03821615801590620016ff57506001600160a01b03811615155b6200170e576200170e62003a73565b60405163189acdbd60e31b81526001600160a01b0382169063c4d66de8906200173c90859060040162003152565b600060405180830381600087803b1580156200175757600080fd5b505af11580156200176c573d6000803e3d6000fd5b505060405163f697ae9960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063f697ae999150620017c190849060019060040162003a89565b600060405180830381600087803b158015620017dc57600080fd5b505af1158015620017f1573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f68ebbbd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200184f57600080fd5b505afa15801562001864573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200188a919062003ac0565b6001600160a01b03166305c4fdf983836040518363ffffffff1660e01b8152600401620018b992919062003ae5565b600060405180830381600087803b158015620018d457600080fd5b505af1158015620018e9573d6000803e3d6000fd5b505050505050565b620019386001600160a01b038316151560008051602062004ab38339815191527f496e76616c696420746f6b656e20636f6e766572746572000000000000000000620014cf565b6001600160a01b0382166000818152600b602052604090819020805460ff1916841515179055517f1a2aaf8fb443c30344ac3e041f678060eb802aa3e68057d31682b9909d5693a4906200198e9084906200310a565b60405180910390a25050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205481811015620019e35760405162461bcd60e51b81526004016200152d9062003b39565b62000ea08484848403620015b0565b33620019fe81620028bb565b62001a456001600160a01b038516151560008051602062004ab38339815191527f5472616e736665722066726f6d20746865207a65726f20616464726573730000620014cf565b62001a8c6001600160a01b038416151560008051602062004ab38339815191527f5472616e7366657220746f20746865207a65726f206164647265737300000000620014cf565b7f000000000000000000000000000000000000000000000000000000000000000062001b146001600160a01b03868116908316148062001add5750816001600160a01b0316856001600160a01b0316145b60008051602062004ab38339815191527f66726f6d2f746f206d75737420657120446f6c6f6d6974654d617267696e0000620014cf565b600754600081815260086020908152604091829020825160a08101845281546001600160a01b0390811680835260018401548216948301949094526002830154948201949094526003909101548084166060830152600160a01b900460ff16151560808201529162001c189190891614801562001ba65750866001600160a01b031682602001516001600160a01b0316145b801562001bb65750858260400151145b801562001be1575060608201516001600160a01b039081166000908152600960205260409020541615155b60008051602062004ab38339815191527f496e76616c696420717565756564207472616e73666572000000000000000000620014cf565b62001c5a81608001511560008051602062004ab38339815191527f5472616e7366657220616c7265616479206578656375746564000000000000008562001f3e565b6000828152600860205260409020600301805460ff60a01b1916600160a01b1790556001600160a01b03868116908416141562001dbe576001600160a01b038088166000908152600960205260409020541662001d1f811580159062001cd5575082606001516001600160a01b0316896001600160a01b0316145b8062001cf957506001600160a01b0389166000908152600b602052604090205460ff165b60008051602062004ab38339815191526b496e76616c69642066726f6d60a01b620014cf565b81606001516001600160a01b0316638ddab4e560006001600160a01b0316836001600160a01b0316141562001d55578962001d57565b825b886040518363ffffffff1660e01b815260040162001d7792919062003b4b565b600060405180830381600087803b15801562001d9257600080fd5b505af115801562001da7573d6000803e3d6000fd5b5050505062001db7878762002932565b5062001ee6565b826001600160a01b0316876001600160a01b03161462001de25762001de262003a73565b6001600160a01b038087166000908152600960205260409020541662001e4c8115158062001e2857506001600160a01b0388166000908152600b602052604090205460ff165b60008051602062004ab383398151915269496e76616c696420746f60b01b620014cf565b81606001516001600160a01b031663797b512560006001600160a01b0316836001600160a01b0316141562001e82578862001e84565b825b886040518363ffffffff1660e01b815260040162001ea492919062003b4b565b600060405180830381600087803b15801562001ebf57600080fd5b505af115801562001ed4573d6000803e3d6000fd5b5050505062001ee48887620029cf565b505b50505050505050565b8362000ea05762001f0083620027eb565b6101d160f51b62001f1184620027eb565b61080f60f21b62001f228562002a8e565b60405162001505959493929190601f60f91b9060200162003b6c565b8362000ea05762001f4f83620027eb565b6101d160f51b62001f6084620027eb565b61080f60f21b62001f228562002bee565b62001f7b62002ef9565b6040805161010081019091528060005b815260200186815260200184815260200185815260200160008152602001836001600160a01b0316815260200160008152602001604051806020016040528060008152508152509050949350505050565b62001fe662002ef9565b62002013604080516080810190915260008082526020820190815260200160008152602001600081525090565b6000198314156200206057604051806080016040528060001515815260200185600181111562002047576200204762003595565b815260200160018152602001600081525090506200209b565b604051806080016040528060001515815260200185600181111562002089576200208962003595565b81526020016000815260200184905290505b60408051610100810190915280600281526020018881526020018281526020018681526020016000815260200160006001600160a01b03168152602001878152602001604051806020016040528060008152508152509150505b95945050505050565b600754600090815260086020908152604091829020825160a08101845281546001600160a01b0390811682526001830154811693820193909352600282015493810193909352600301549081166060830152600160a01b900460ff1615801560808301819052620021a457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681602001516001600160a01b0316145b15620021c057620021c0816060015182602001516000620015b0565b816001600160a01b0316856001600160a01b03161480156200221357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b15620022265762002226828585620015b0565b6001600760008282546200223b919062003bd6565b90915550506040805160a0810182526001600160a01b038088168252868116602080840191825283850188815287841660608601908152600060808701818152600780548352600890955290889020965187549087166001600160a01b03199182161788559451600188018054918816919096161790945590516002860155516003909401805492511515600160a01b026001600160a81b031990931694909316939093171790555490517f41f436ede2f45a36c2a15333e202b31f7040c914a78d7eb62d6f7caa6414a756906200231b90889088908890889062003bf1565b60405180910390a25050505050565b604080516001808252818301909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081620023415790505090506040518060400160405280876001600160a01b0316815260200185815250816000815181106200239f576200239f6200354b565b6020908102919091010152604080516001808252818301909252600091816020015b620023cb62002ef9565b815260200190600190039081620023c1579050509050620023f0600085858962001f71565b816000815181106200240657620024066200354b565b602090810291909101015260405163a67a6a4560e01b81526001600160a01b0389169063a67a6a459062002441908590859060040162003818565b600060405180830381600087803b1580156200245c57600080fd5b505af115801562002471573d6000803e3d6000fd5b505050505050505050505050565b604080516001808252818301909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081620024965790505090506040518060400160405280886001600160a01b031681526020018781525081600081518110620024f457620024f46200354b565b6020908102919091010152604080516001808252818301909252600091816020015b6200252062002ef9565b8152602001906001900390816200251657905050905062002545600086868962002d12565b816000815181106200255b576200255b6200354b565b602090810291909101015260405163a67a6a4560e01b81526001600160a01b038a169063a67a6a459062002596908590859060040162003818565b600060405180830381600087803b158015620025b157600080fd5b505af1158015620025c6573d6000803e3d6000fd5b5060009250620025d4915050565b836003811115620025e957620025e962003595565b14806200260a5750600183600381111562002608576200260862003595565b145b156200263f576200263f89836000815181106200262b576200262b6200354b565b602002602001015160000151898862002d31565b505050505050505050565b6000620026856001600160a01b038316151560008051602062004ab38339815191526e125b9d985b1a59081858d8dbdd5b9d608a1b620014cf565b6001600160a01b038281166000908152600a6020526040902054620026d491161560008051602062004ab3833981519152735661756c7420616c72656164792065786973747360601b620014cf565b600062002730600084604051602001620026ef9190620034d0565b6040516020818303038152906040528051906020012060405180602001620027179062002f70565b601f1982820381018352601f9091011660405262001536565b90506001600160a01b0381166200274b576200274b62003a73565b826001600160a01b03167f5d9c31ffa0fecffd7cf379989a3c7af252f0335e0d2a1320b55245912c781f538260405162002786919062003152565b60405180910390a26001600160a01b03808216600081815260096020908152604080832080549589166001600160a01b03199687168117909155808452600a909252909120805490931690911790915561dead146200074057620007408382620016de565b606060008260405160200162002802919062003c35565b60408051601f19818403018152919052905060205b80156200287757806200282a8162003c4c565b9150508181815181106200284257620028426200354b565b01602001516001600160f81b03191615620028715760006200286682600162003bd6565b835250909392505050565b62002817565b5060408051600080825260208201909252905b509392505050565b6000604051836040820152846020820152828152600b810160ff81536055902095945050505050565b620016db7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316147127b7363ca237b637b6b4ba32a6b0b933b4b760711b7f4f6e6c7920446f6c6f6d6974652063616e2063616c6c2066756e6374696f6e008462001eef565b6001600160a01b0382166200295b5760405162461bcd60e51b81526004016200152d9062003c9b565b80600260008282546200296f919062003bd6565b90915550506001600160a01b038216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620029c39085906200328c565b60405180910390a35050565b6001600160a01b038216620029f85760405162461bcd60e51b81526004016200152d9062003cec565b6001600160a01b0382166000908152602081905260409020548181101562002a345760405162461bcd60e51b81526004016200152d9062003d3e565b6001600160a01b0383166000818152602081905260408082208585039055600280548690039055519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200165f9086906200328c565b60408051602a80825260608281019093526001600160a01b03841691600091602082018180368337019050509050603060f81b8160008151811062002ad75762002ad76200354b565b60200101906001600160f81b031916908160001a905350607860f81b8160018151811062002b095762002b096200354b565b60200101906001600160f81b031916908160001a90535060005b60148110156200288a57600062002b3c82600262003d50565b905062002b4c600f851662002e35565b8362002b5a83602962003d72565b8151811062002b6d5762002b6d6200354b565b60200101906001600160f81b031916908160001a905350600484901c935062002b99600f851662002e35565b8362002ba783602862003d72565b8151811062002bba5762002bba6200354b565b60200101906001600160f81b031916908160001a9053505060049290921c918062002be58162003577565b91505062002b23565b60608162002c135750506040805180820190915260018152600360fc1b602082015290565b8160005b811562002c43578062002c2a8162003577565b915062002c3b9050600a8362003da2565b915062002c17565b60008167ffffffffffffffff81111562002c615762002c6162003444565b6040519080825280601f01601f19166020018201604052801562002c8c576020820181803683370190505b508593509050815b801562002d09578062002ca78162003c4c565b915062002cb89050600a8562003db9565b62002cc590603062003bd6565b60f81b82828151811062002cdd5762002cdd6200354b565b60200101906001600160f81b031916908160001a90535062002d01600a8562003da2565b935062002c94565b50949350505050565b62002d1c62002ef9565b60408051610100810190915280600162001f8b565b6040805180820182526001600160a01b0380861682526020820185905291516311f46d4f60e21b81529091600091908716906347d1b53c9062002d7b908590879060040162003dd0565b604080518083038186803b15801562002d9357600080fd5b505afa15801562002da8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002dce919062003ea8565b9050620018e962002ddf8262002e64565b8062002df6575060208201516001600160801b0316155b7020b1b1b7bab73a2130b630b731b2a634b160791b7f6163636f756e742063616e6e6f7420676f206e6567617469766500000000000088888862002e84565b6000600a82101562002e575762002e4e60308362003bd6565b60f81b92915050565b62002e4e60578362003bd6565b8051600090801562000740575050602001516001600160801b0316151590565b85620018e95762002e9585620027eb565b6101d160f51b62002ea686620027eb565b61080f60f21b62002eb78762002a8e565b61016160f51b62002ec88862002bee565b61016160f51b62002ed98962002bee565b6040516200150599989796959493929190601f60f91b9060200162003ecd565b60408051610100810182526000808252602082015290810162002f3e604080516080810190915260008082526020820190815260200160008152602001600081525090565b8152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001606081525090565b610b378062003f7c83390190565b805b82525050565b600062002f94838362002f7e565b505060200190565b600062002fa7825190565b80845260209384019383018060005b8381101562002fdf57815162002fcd888262002f86565b97506020830192505060010162002fb6565b509495945050505050565b6020808252810162000aaa818462002f9c565b60005b838110156200301a57818101518382015260200162003000565b8381111562000ea05750506000910152565b600062003037825190565b8084526020840193506200305081856020860162002ffd565b601f01601f19169290920192915050565b6020808252810162000aaa81846200302c565b60006001600160a01b03821662000740565b620030918162003074565b8114620016db57600080fd5b8035620007408162003086565b8062003091565b80356200074081620030aa565b60008060408385031215620030d657620030d6600080fd5b6000620030e485856200309d565b9250506020620030f785828601620030b1565b9150509250929050565b80151562002f80565b6020810162000740828462003101565b600060208284031215620031315762003131600080fd5b60006200313f84846200309d565b949350505050565b62002f808162003074565b6020810162000740828462003147565b60008083601f840112620031795762003179600080fd5b50813567ffffffffffffffff811115620031965762003196600080fd5b602083019150836020820283011115620031b357620031b3600080fd5b9250929050565b60008060208385031215620031d257620031d2600080fd5b823567ffffffffffffffff811115620031ee57620031ee600080fd5b620031fc8582860162003162565b92509250509250929050565b80151562003091565b8035620007408162003208565b60008060408385031215620032365762003236600080fd5b60006200324485856200309d565b9250506020620030f78582860162003211565b6000620007408262003074565b6000620007408262003257565b62002f808162003264565b6020810162000740828462003271565b6020810162000740828462002f7e565b600080600060608486031215620032b657620032b6600080fd5b6000620032c486866200309d565b9350506020620032d7868287016200309d565b9250506040620032ea86828701620030b1565b9150509250925092565b60ff811662002f80565b60208101620007408284620032f4565b600080600060608486031215620033285762003328600080fd5b6000620033368686620030b1565b9350506020620032d786828701620030b1565b60008060408385031215620033615762003361600080fd5b6000620030e48585620030b1565b600060208284031215620033865762003386600080fd5b60006200313f8484620030b1565b805160a0830190620033a7848262003147565b506020820151620033bc602085018262003147565b506040820151620033d1604085018262002f7e565b506060820151620033e6606085018262003147565b50608082015162000ea0608085018262003101565b60a0810162000740828462003394565b60008060408385031215620034235762003423600080fd5b60006200343185856200309d565b9250506020620030f7858286016200309d565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b6002810460018216806200348557607f821691505b602082108114156200349b576200349b6200345a565b50919050565b6000620007408260601b90565b60006200074082620034a1565b62002f80620034ca8262003074565b620034ae565b6000620034de8284620034bb565b50601401919050565b80516200074081620030aa565b6000602082840312156200350b576200350b600080fd5b60006200313f8484620034e7565b8051620007408162003208565b6000602082840312156200353d576200353d600080fd5b60006200313f848462003519565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200358e576200358e62003561565b5060010190565b634e487b7160e01b600052602160045260246000fd5b80516040830190620035be848262003147565b50602082015162000ea0602085018262002f7e565b6000620035e18383620035ab565b505060400190565b6000620035f4825190565b80845260209384019383018060005b8381101562002fdf5781516200361a8882620035d3565b97506020830192505060010162003603565b60098110620016db57620016db62003595565b8062001340816200362c565b600062000740826200363f565b62002f80816200364b565b60028110620016db57620016db62003595565b80620013408162003663565b6000620007408262003676565b62002f808162003682565b80516080830190620036ad848262003101565b506020820151620036c260208501826200368f565b506040820151620036d760408501826200368f565b50606082015162000ea0606085018262002f7e565b805160009061016084019062003703858262003658565b50602083015162003718602086018262002f7e565b5060408301516200372d60408601826200369a565b5060608301516200374260c086018262002f7e565b5060808301516200375760e086018262002f7e565b5060a08301516200376d61010086018262003147565b5060c08301516200378361012086018262002f7e565b5060e0830151848203610140860152620020f582826200302c565b600062000aaa8383620036ec565b6000620037b7825190565b80845260208401935083602082028501620037d28560200190565b8060005b858110156200380b5784840389528151620037f285826200379e565b94506020830160209a909a0199925050600101620037d6565b5091979650505050505050565b604080825281016200382b8185620035e9565b905081810360208301526200313f8184620037ac565b6040810162003851828562002f7e565b62000aaa602083018462002f7e565b8051620007408162003086565b600060208284031215620038845762003884600080fd5b60006200313f848462003860565b60006200389d825190565b620038ad81856020860162002ffd565b9290920192915050565b6001600160f01b0319811662002f80565b6000620038d6828662003892565b9150620038e48285620038b7565b600282019150620020f5828462003892565b601d81526000602082017f437265617465323a20696e73756666696369656e742062616c616e6365000000815291505b5060200190565b602080825281016200074081620038f6565b60208082527f437265617465323a2062797465636f6465206c656e677468206973207a65726f9101908152600062003926565b6020808252810162000740816200393f565b601981526000602082017f437265617465323a204661696c6564206f6e206465706c6f79000000000000008152915062003926565b60208082528101620007408162003984565b602481526000602082017f45524332303a20417070726f76652066726f6d20746865207a65726f206164648152637265737360e01b602082015291505b5060400190565b602080825281016200074081620039cb565b602281526000602082017f45524332303a20417070726f766520746f20746865207a65726f206164647265815261737360f01b6020820152915062003a08565b60208082528101620007408162003a21565b634e487b7160e01b600052600160045260246000fd5b6040810162003a99828562003147565b62000aaa602083018462003101565b620030918162003257565b8051620007408162003aa8565b60006020828403121562003ad75762003ad7600080fd5b60006200313f848462003ab3565b6040810162003af5828562003147565b62000aaa602083018462003147565b601d81526000602082017f45524332303a20496e73756666696369656e7420616c6c6f77616e63650000008152915062003926565b60208082528101620007408162003b04565b6040810162003851828562003147565b6001600160f81b0319811662002f80565b600062003b7a828962003892565b915062003b888288620038b7565b60028201915062003b9a828762003892565b915062003ba88286620038b7565b60028201915062003bba828562003892565b915062003bc8828462003b5b565b506001019695505050505050565b6000821982111562003bec5762003bec62003561565b500190565b6080810162003c01828762003147565b62003c10602083018662003147565b62003c1f604083018562002f7e565b620020f5606083018462003147565b8062002f80565b600062003c43828462003c2e565b50602001919050565b60008162003c5e5762003c5e62003561565b506000190190565b601f81526000602082017f45524332303a204d696e7420746f20746865207a65726f2061646472657373008152915062003926565b60208082528101620007408162003c66565b602181526000602082017f45524332303a204275726e2066726f6d20746865207a65726f206164647265738152607360f81b6020820152915062003a08565b60208082528101620007408162003cad565b602281526000602082017f45524332303a204275726e20616d6f756e7420657863656564732062616c616e815261636560f01b6020820152915062003a08565b60208082528101620007408162003cfe565b600081600019048311821515161562003d6d5762003d6d62003561565b500290565b60008282101562003d875762003d8762003561565b500390565b634e487b7160e01b600052601260045260246000fd5b60008262003db45762003db462003d8c565b500490565b60008262003dcb5762003dcb62003d8c565b500690565b6060810162003de08285620035ab565b62000aaa604083018462002f7e565b601f19601f830116810181811067ffffffffffffffff8211171562003e185762003e1862003444565b6040525050565b600062003e2b60405190565b905062001340828262003def565b6001600160801b03811662003091565b8051620007408162003e39565b60006040828403121562003e6d5762003e6d600080fd5b62003e79604062003e1f565b9050600062003e89848462003519565b825250602062003e9c8484830162003e49565b60208301525092915050565b60006040828403121562003ebf5762003ebf600080fd5b60006200313f848462003e56565b600062003edb828d62003892565b915062003ee9828c620038b7565b60028201915062003efb828b62003892565b915062003f09828a620038b7565b60028201915062003f1b828962003892565b915062003f298288620038b7565b60028201915062003f3b828762003892565b915062003f498286620038b7565b60028201915062003f5b828562003892565b915062003f69828462003b5b565b506001019a995050505050505050505056fe608060405234801561001057600080fd5b5061004461003f60017f4c711eee7e3094af1816c5450bcb78a8ffe46729a7979be7e0bf539fb4d4eef361005f565b339055565b610076565b634e487b7160e01b600052601160045260246000fd5b60008282101561007157610071610049565b500390565b610ab2806100856000396000f3fe60806040526004361061004e5760003560e01c8063392e53cd146100b45780635c60da1b146100df5780638da5cb5b14610101578063c4d66de814610116578063d8a06f7314610136576100a9565b366100a95761009761005e61014b565b7f49736f6c6174696f6e4d6f64655570677261646561626c6550726f78790000006e139bdd081a5b9a5d1a585b1a5e9959608a1b610187565b6100a76100a26101ea565b610269565b005b61009761005e61014b565b3480156100c057600080fd5b506100c961014b565b6040516100d6919061077d565b60405180910390f35b3480156100eb57600080fd5b506100f46101ea565b6040516100d691906107a5565b34801561010d57600080fd5b506100f461028d565b34801561012257600080fd5b506100a76101313660046107d2565b6102bd565b34801561014257600080fd5b506100f4610473565b600061017f61017b60017f059687b4dba0a8c0c94866b6d34b3f94074057ac6e4d8d39cf07d3a0a55f2050610811565b5490565b600114905090565b826101e557610195826104a3565b6101d160f51b6101a4836104a3565b6040516020016101b693929190610886565b60408051601f198184030181529082905262461bcd60e51b82526101dc916004016108e9565b60405180910390fd5b505050565b60006101f4610473565b6001600160a01b031663a6e7d83f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022c57600080fd5b505afa158015610240573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610264919061090c565b905090565b3660008037600080366000845af43d6000803e808015610288573d6000f35b3d6000fd5b600061026461017b60017fa7b53796fd2d99cb1f5ae019b54f9e024446c3d12b483f733ccc62ed04eb126b610811565b6103066102c861014b565b157f49736f6c6174696f6e4d6f64655570677261646561626c6550726f787900000072105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b610187565b6103d130610312610473565b6001600160a01b031663b01f61e1846040518263ffffffff1660e01b815260040161033d91906107a5565b60206040518083038186803b15801561035557600080fd5b505afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d919061090c565b6001600160a01b0316147f49736f6c6174696f6e4d6f64655570677261646561626c6550726f78790000006e125b9d985b1a59081858d8dbdd5b9d608a1b8461053e565b6104046103ff60017fa7b53796fd2d99cb1f5ae019b54f9e024446c3d12b483f733ccc62ed04eb126b610811565b829055565b61043b61040f6101ea565b6040516104279063204a7f0760e21b9060200161093d565b60405160208183030381529060405261058a565b5061047061046a60017f059687b4dba0a8c0c94866b6d34b3f94074057ac6e4d8d39cf07d3a0a55f2050610811565b60019055565b50565b600061026461017b60017f4c711eee7e3094af1816c5450bcb78a8ffe46729a7979be7e0bf539fb4d4eef3610811565b60606000826040516020016104b89190610958565b60408051601f19818403018152919052905060205b801561052357806104dd8161096d565b9150508181815181106104f2576104f2610984565b01602001516001600160f81b0319161561051e57600061051382600161099a565b835250909392505050565b6104cd565b5060408051600080825260208201909252905b509392505050565b836105845761054c836104a3565b6101d160f51b61055b846104a3565b61080f60f21b61056a85610603565b6040516101b6959493929190601f60f91b906020016109c2565b50505050565b6060600080846001600160a01b0316846040516105a79190610a20565b600060405180830381855af49150503d80600081146105e2576040519150601f19603f3d011682016040523d82523d6000602084013e6105e7565b606091505b5091509150816105f9576105f9610a2c565b9150505b92915050565b60408051602a80825260608281019093526001600160a01b03841691600091602082018180368337019050509050603060f81b8160008151811061064957610649610984565b60200101906001600160f81b031916908160001a905350607860f81b8160018151811061067857610678610984565b60200101906001600160f81b031916908160001a90535060005b60148110156105365760006106a8826002610a42565b90506106b6600f8516610749565b836106c2836029610811565b815181106106d2576106d2610984565b60200101906001600160f81b031916908160001a905350600484901c93506106fc600f8516610749565b83610708836028610811565b8151811061071857610718610984565b60200101906001600160f81b031916908160001a9053505060049290921c918061074181610a61565b915050610692565b6000600a8210156107685761075f60308361099a565b60f81b92915050565b61075f60578361099a565b8015155b82525050565b602081016105fd8284610773565b60006001600160a01b0382166105fd565b6107778161078b565b602081016105fd828461079c565b6107bc8161078b565b811461047057600080fd5b80356105fd816107b3565b6000602082840312156107e7576107e7600080fd5b60006107f384846107c7565b949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610823576108236107fb565b500390565b60005b8381101561084357818101518382015260200161082b565b838111156105845750506000910152565b600061085e825190565b61086c818560208601610828565b9290920192915050565b6001600160f01b03198116610777565b60006108928286610854565b915061089e8285610876565b6002820191506108ae8284610854565b95945050505050565b60006108c1825190565b8084526020840193506108d8818560208601610828565b601f01601f19169290920192915050565b602080825281016108fa81846108b7565b9392505050565b80516105fd816107b3565b60006020828403121561092157610921600080fd5b60006107f38484610901565b6001600160e01b03198116610777565b6000610949828461092d565b50600401919050565b80610777565b60006109648284610952565b50602001919050565b60008161097c5761097c6107fb565b506000190190565b634e487b7160e01b600052603260045260246000fd5b600082198211156109ad576109ad6107fb565b500190565b6001600160f81b03198116610777565b60006109ce8289610854565b91506109da8288610876565b6002820191506109ea8287610854565b91506109f68286610876565b600282019150610a068285610854565b9150610a1282846109b2565b506001019695505050505050565b60006108fa8284610854565b634e487b7160e01b600052600160045260246000fd5b6000816000190483118215151615610a5c57610a5c6107fb565b500290565b6000600019821415610a7557610a756107fb565b506001019056fea264697066735822122075a44ae10adcae9b874b7ea4e5b0292a10ae4024647e2db8988dc6bce3251ef064736f6c6343000809003349736f6c6174696f6e4d6f64655661756c74466163746f727900000000000000a2646970667358221220ac3188bce429d87f685b7bbecc7c57aa889a5f50f185d7a45f3b2d709ea1ecaf64736f6c63430008090033608060405234801561001057600080fd5b5061004461003f60017f4c711eee7e3094af1816c5450bcb78a8ffe46729a7979be7e0bf539fb4d4eef361005f565b339055565b610076565b634e487b7160e01b600052601160045260246000fd5b60008282101561007157610071610049565b500390565b610ab2806100856000396000f3fe60806040526004361061004e5760003560e01c8063392e53cd146100b45780635c60da1b146100df5780638da5cb5b14610101578063c4d66de814610116578063d8a06f7314610136576100a9565b366100a95761009761005e61014b565b7f49736f6c6174696f6e4d6f64655570677261646561626c6550726f78790000006e139bdd081a5b9a5d1a585b1a5e9959608a1b610187565b6100a76100a26101ea565b610269565b005b61009761005e61014b565b3480156100c057600080fd5b506100c961014b565b6040516100d6919061077d565b60405180910390f35b3480156100eb57600080fd5b506100f46101ea565b6040516100d691906107a5565b34801561010d57600080fd5b506100f461028d565b34801561012257600080fd5b506100a76101313660046107d2565b6102bd565b34801561014257600080fd5b506100f4610473565b600061017f61017b60017f059687b4dba0a8c0c94866b6d34b3f94074057ac6e4d8d39cf07d3a0a55f2050610811565b5490565b600114905090565b826101e557610195826104a3565b6101d160f51b6101a4836104a3565b6040516020016101b693929190610886565b60408051601f198184030181529082905262461bcd60e51b82526101dc916004016108e9565b60405180910390fd5b505050565b60006101f4610473565b6001600160a01b031663a6e7d83f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022c57600080fd5b505afa158015610240573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610264919061090c565b905090565b3660008037600080366000845af43d6000803e808015610288573d6000f35b3d6000fd5b600061026461017b60017fa7b53796fd2d99cb1f5ae019b54f9e024446c3d12b483f733ccc62ed04eb126b610811565b6103066102c861014b565b157f49736f6c6174696f6e4d6f64655570677261646561626c6550726f787900000072105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b610187565b6103d130610312610473565b6001600160a01b031663b01f61e1846040518263ffffffff1660e01b815260040161033d91906107a5565b60206040518083038186803b15801561035557600080fd5b505afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d919061090c565b6001600160a01b0316147f49736f6c6174696f6e4d6f64655570677261646561626c6550726f78790000006e125b9d985b1a59081858d8dbdd5b9d608a1b8461053e565b6104046103ff60017fa7b53796fd2d99cb1f5ae019b54f9e024446c3d12b483f733ccc62ed04eb126b610811565b829055565b61043b61040f6101ea565b6040516104279063204a7f0760e21b9060200161093d565b60405160208183030381529060405261058a565b5061047061046a60017f059687b4dba0a8c0c94866b6d34b3f94074057ac6e4d8d39cf07d3a0a55f2050610811565b60019055565b50565b600061026461017b60017f4c711eee7e3094af1816c5450bcb78a8ffe46729a7979be7e0bf539fb4d4eef3610811565b60606000826040516020016104b89190610958565b60408051601f19818403018152919052905060205b801561052357806104dd8161096d565b9150508181815181106104f2576104f2610984565b01602001516001600160f81b0319161561051e57600061051382600161099a565b835250909392505050565b6104cd565b5060408051600080825260208201909252905b509392505050565b836105845761054c836104a3565b6101d160f51b61055b846104a3565b61080f60f21b61056a85610603565b6040516101b6959493929190601f60f91b906020016109c2565b50505050565b6060600080846001600160a01b0316846040516105a79190610a20565b600060405180830381855af49150503d80600081146105e2576040519150601f19603f3d011682016040523d82523d6000602084013e6105e7565b606091505b5091509150816105f9576105f9610a2c565b9150505b92915050565b60408051602a80825260608281019093526001600160a01b03841691600091602082018180368337019050509050603060f81b8160008151811061064957610649610984565b60200101906001600160f81b031916908160001a905350607860f81b8160018151811061067857610678610984565b60200101906001600160f81b031916908160001a90535060005b60148110156105365760006106a8826002610a42565b90506106b6600f8516610749565b836106c2836029610811565b815181106106d2576106d2610984565b60200101906001600160f81b031916908160001a905350600484901c93506106fc600f8516610749565b83610708836028610811565b8151811061071857610718610984565b60200101906001600160f81b031916908160001a9053505060049290921c918061074181610a61565b915050610692565b6000600a8210156107685761075f60308361099a565b60f81b92915050565b61075f60578361099a565b8015155b82525050565b602081016105fd8284610773565b60006001600160a01b0382166105fd565b6107778161078b565b602081016105fd828461079c565b6107bc8161078b565b811461047057600080fd5b80356105fd816107b3565b6000602082840312156107e7576107e7600080fd5b60006107f384846107c7565b949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610823576108236107fb565b500390565b60005b8381101561084357818101518382015260200161082b565b838111156105845750506000910152565b600061085e825190565b61086c818560208601610828565b9290920192915050565b6001600160f01b03198116610777565b60006108928286610854565b915061089e8285610876565b6002820191506108ae8284610854565b95945050505050565b60006108c1825190565b8084526020840193506108d8818560208601610828565b601f01601f19169290920192915050565b602080825281016108fa81846108b7565b9392505050565b80516105fd816107b3565b60006020828403121561092157610921600080fd5b60006107f38484610901565b6001600160e01b03198116610777565b6000610949828461092d565b50600401919050565b80610777565b60006109648284610952565b50602001919050565b60008161097c5761097c6107fb565b506000190190565b634e487b7160e01b600052603260045260246000fd5b600082198211156109ad576109ad6107fb565b500190565b6001600160f81b03198116610777565b60006109ce8289610854565b91506109da8288610876565b6002820191506109ea8287610854565b91506109f68286610876565b600282019150610a068285610854565b9150610a1282846109b2565b506001019695505050505050565b60006108fa8284610854565b634e487b7160e01b600052600160045260246000fd5b6000816000190483118215151615610a5c57610a5c6107fb565b500290565b6000600019821415610a7557610a756107fb565b506001019056fea264697066735822122075a44ae10adcae9b874b7ea4e5b0292a10ae4024647e2db8988dc6bce3251ef064736f6c6343000809003300000000000000000000000097f893f0cc8f69f6133082f15758f0a3eae1b210000000000000000000000000355ec27c9d4530de01a103fa27f884a2f3da65ef00000000000000000000000038e49a617305101216ec6306e3a18065d14bf3a700000000000000000000000081f64af8ec051d9b23bbb4151ab6237eb6cbc6780000000000000000000000006bd780e7fdf01d77e4d475c821f1e7ae05409072