0 txs
16.3k calls
constructor
No constructor.
functions
getAccountPositionInfoList
viewfunction getAccountPositionInfoList(DataStore dataStore, IReferralStorage referralStorage, address account, address[] markets, tuple[] marketPrices, address uiFeeReceiver, uint256 start, uint256 end) view returns (tuple[])
getAccountPositions
viewfunction getAccountPositions(DataStore dataStore, address account, uint256 start, uint256 end) view returns (tuple[])
getNextFundingAmountPerSize
viewfunction getNextFundingAmountPerSize(DataStore dataStore, tuple market, tuple prices) view returns (tuple)
getPositionInfo
viewfunction getPositionInfo(DataStore dataStore, IReferralStorage referralStorage, bytes32 positionKey, tuple prices, uint256 sizeDeltaUsd, address uiFeeReceiver, bool usePositionSizeAsSizeDeltaUsd) view returns (tuple)
getPositionInfoList
viewfunction getPositionInfoList(DataStore dataStore, IReferralStorage referralStorage, bytes32[] positionKeys, tuple[] prices, address uiFeeReceiver) view returns (tuple[])
events
No events.
errors
EmptyMarketPrice
error EmptyMarketPrice(address market)
EmptyPosition
error EmptyPosition()
PRBMath__MulDivFixedPointOverflow
error PRBMath__MulDivFixedPointOverflow(uint256 prod1)
PRBMathUD60x18__Exp2InputTooBig
error PRBMathUD60x18__Exp2InputTooBig(uint256 x)
PRBMathUD60x18__LogInputTooSmall
error PRBMathUD60x18__LogInputTooSmall(uint256 x)
UnableToGetBorrowingFactorEmptyPoolUsd
error UnableToGetBorrowingFactorEmptyPoolUsd()
UnableToGetCachedTokenPrice
error UnableToGetCachedTokenPrice(address token, address market)
UnableToGetFundingFactorEmptyOpenInterest
error UnableToGetFundingFactorEmptyOpenInterest()
UnexpectedBorrowingFactor
error UnexpectedBorrowingFactor(uint256 positionBorrowingFactor, uint256 cumulativeBorrowingFactor)
creation bytecode
0x615de5610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100615760003560e01c80630dc7f3eb1461006657806335e084c81461008f578063505d9cb2146100af5780636aeb8755146100cf57806378109081146100ef575b600080fd5b610079610074366004614f0d565b610102565b6040516100869190614fde565b60405180910390f35b6100a261009d36600461503b565b61011f565b60405161008691906153f6565b6100c26100bd366004615405565b6101c3565b604051610086919061544b565b6100e26100dd366004615529565b610304565b604051610086919061561f565b6100e26100fd366004615663565b610401565b61010a6149a5565b610115848484610594565b90505b9392505050565b6101276149e1565b60405163fdfc26f360e01b815260009073065799d0af51ef81686a641d4e5a58a0b8186e3e9063fdfc26f390610163908c908b9060040161578c565b6101c060405180830381865af4158015610181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a591906157f4565b90506101b689898389898989610937565b9998505050505050505050565b606060006101d386868686610fbc565b9050600081516001600160401b038111156101f0576101f0614daf565b60405190808252806020026020018201604052801561022957816020015b610216614a64565b81526020019060019003908161020e5790505b50905060005b82518110156102f757600083828151811061024c5761024c61590e565b6020026020010151905073065799d0af51ef81686a641d4e5a58a0b8186e3e63fdfc26f38a836040518363ffffffff1660e01b815260040161028f92919061578c565b6101c060405180830381865af41580156102ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d191906157f4565b8383815181106102e3576102e361590e565b60209081029190910101525060010161022f565b509150505b949350505050565b6060600084516001600160401b0381111561032157610321614daf565b60405190808252806020026020018201604052801561035a57816020015b6103476149e1565b81526020019060019003908161033f5790505b50905060005b85518110156103f657600086828151811061037d5761037d61590e565b602002602001015190506103b189898389868151811061039f5761039f61590e565b602002602001015160008a600161011f565b8383815181106103c3576103c361590e565b6020026020010181905250808383815181106103e1576103e161590e565b60209081029190910101515250600101610360565b509695505050505050565b606060006104118a898686610fbc565b9050600081516001600160401b0381111561042e5761042e614daf565b60405190808252806020026020018201604052801561046757816020015b6104546149e1565b81526020019060019003908161044c5790505b50905060005b825181101561058557600083828151811061048a5761048a61590e565b60200260200101519050600073065799d0af51ef81686a641d4e5a58a0b8186e3e63fdfc26f38f846040518363ffffffff1660e01b81526004016104cf92919061578c565b6101c060405180830381865af41580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051191906157f4565b9050600061052b8c8c61052685516020015190565b611051565b905061053e8f8f848460008f6001610937565b8585815181106105505761055061590e565b60200260200101819052508285858151811061056e5761056e61590e565b60209081029190910101515250505060010161046d565b509a9950505050505050505050565b61059c6149a5565b6105a46149a5565b6105ac614afc565b60006105c0866040015187606001516110ed565b90506105d8878760000151886040015160018561111e565b82515152855160608701516105f191899160018561111e565b825151602001528551604087015161060d91899160008561111e565b825160200151528551606087015161062991899160008561111e565b825160209081015181019190915282515190810151905161064a919061593a565b6020808401919091528251810151908101519051610668919061593a565b60408301526020820151158061068057506040820151155b1561069057829350505050610118565b61069e8787600001516111ae565b606083018190528651602084015160408501516106bf938b93929190611246565b6040860152151580855260208501919091526106df5781604001516106e5565b81602001515b608083018190526020840151606084015161070992916107049161594d565b611954565b60a0830181905261071b90829061597a565b60a083015282511561076c5760a0820151825151516020840151610740929190611969565b60c083015260a082015182515160209081015190840151610762929190611969565b60e08301526107b2565b60a0820151825160200151516040840151610788929190611969565b60c083015260a08201518251602090810151015160408401516107ac929190611969565b60e08301525b8251156108705760c08201518251515160208088015101516107d79291906001611976565b6060840151515260e08201518251516020908101516040880151909101516108029291906001611976565b83606001516000015160200181815250506108308260c0015183604001518760200151602001516000611976565b836080015160200151600001818152505061085e8260e0015183604001518760400151602001516000611976565b6080840151602090810151015261092c565b6108958260c00151836000015160200151600001518760200151602001516001611976565b83606001516020015160000181815250506108cb8260e00151836000015160200151602001518760400151602001516001611976565b83606001516020015160200181815250506108f98260c0015183602001518760200151602001516000611976565b6080840151515260e08201516020808401516040880151909101516109219291906000611976565b608084015151602001525b509095945050505050565b61093f6149e1565b600061094a87515190565b6001600160a01b03160361097157604051634dfbbff360e01b815260040160405180910390fd5b6109796149e1565b610981614b47565b6020820188905273d727120ac811e9136d4a5d5c6219aee37e27578563a8d8fff58b6109af8b516020015190565b6040518363ffffffff1660e01b81526004016109cc92919061598e565b608060405180830381865af41580156109e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0d91906159a8565b80825260208301515160400151610a2491896119de565b60208201528315610a3b5760208083015101515195505b7360dfa6974a1c3a45918b6b4e6f365fcc2222df7e63da1d77b98b83600001518a610a6c8760200151602001515190565b6020808901518101510151610a808d611a78565b610a8990615a11565b6020808b015101516060015160208b015160400151516040518963ffffffff1660e01b8152600401610ac2989796959493929190615a90565b60c060405180830381865af4158015610adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b039190615aec565b606080840191825260408051610140810182526001600160a01b03808f1682528d8116602080840191909152808801518385015286015182850152935182015115156080820152845190910151831660a0820152835190910151821660c082015260e081018890529086166101008201526000610120820152610b8581611ae6565b604084015260208301518251610b9d918d918b611d55565b604083018190526020830151610bb5918d9190611d63565b6040840151606001528151600090610bcf908d908b610102565b9050610bfb8c610be58660200151516020015190565b6020870151805160409081015191015151611d76565b604085810151015160600152602080850151510151610c32908d908551604001516020880151610c2d90604001515190565b611df1565b604085810151015160800152602080850151510151610c62908d9085516060015160208801516040015151611df1565b60408086015181015160a00191909152835160608101519101516000916001600160a01b03918216911614610c98576001610c9b565b60025b60ff169050610cb08560200151604001515190565b15610d8d5760808201515151610cc790829061594d565b856040015160400151608001818151610ce0919061593a565b90525060808201515160200151610cf890829061594d565b85604001516040015160a001818151610d11919061593a565b90525083516040015160208601516001600160a01b0390911690610d3790516040015190565b6001600160a01b031603610d785760608201515151610d5790829061594d565b856040015160400151606001818151610d70919061593a565b905250610e6d565b60608201515160200151610d5790829061594d565b60808201516020015151610da290829061594d565b856040015160400151608001818151610dbb919061593a565b90525060808201516020908101510151610dd690829061594d565b85604001516040015160a001818151610def919061593a565b90525083516040015160208601516001600160a01b0390911690610e1590516040015190565b6001600160a01b031603610e385760608201516020015151610d5790829061594d565b8082606001516020015160200151610e50919061594d565b856040015160400151606001818151610e69919061593a565b9052505b610e838560400151604001518660200151611e0d565b85604001516040018190525073f718ae0025504577b18f8773e56986b6e29c819f63e22de7938e86600001518d89602001518e6040518663ffffffff1660e01b8152600401610ed6959493929190615b72565b606060405180830381865af4158015610ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f179190615bbc565b5060a087015260808601819052606086015151610f349190615bea565b60c08601526040808601516102008101516080820151909201516060820151602001516101a0909201519091610f699161593a565b610f73919061593a565b610f7d9190615c12565b604080870180516101c090810193909352519081015151910151610fa1919061593a565b60408601516101e0015250929b9a5050505050505050505050565b6060846001600160a01b031663f069052a610fd686611e89565b6040516001600160e01b031960e084901b16815260048101919091526024810186905260448101859052606401600060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110489190810190615c25565b95945050505050565b611059614b8c565b60005b84518110156110c85760008582815181106110795761107961590e565b60200260200101519050836001600160a01b0316816001600160a01b0316036110bf578482815181106110ae576110ae61590e565b602002602001015192505050610118565b5060010161105c565b508160405163eb1947dd60e01b81526004016110e49190615cb0565b60405180910390fd5b6000816001600160a01b0316836001600160a01b03161461110f576001611112565b60025b60ff1690505b92915050565b600081866001600160a01b031663bd02d0f561113b888888611f0f565b6040518263ffffffff1660e01b815260040161115991815260200190565b602060405180830381865afa158015611176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119a9190615cc4565b6111a4919061597a565b9695505050505050565b600080836001600160a01b031663bd02d0f56111c985611fa1565b6040518263ffffffff1660e01b81526004016111e791815260200190565b602060405180830381865afa158015611204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112289190615cc4565b90508060000361123c576000915050611118565b6102fc8142615c12565b60008060006112a1604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6112ab8787611fd9565b81526112b7868861593a565b8160200181815250506112f96040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b896001600160a01b031663bd02d0f56113118b611ffb565b6040518263ffffffff1660e01b815260040161132f91815260200190565b602060405180830381865afa15801561134c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113709190615cc4565b6040820152815115801561138657506040810151155b1561139e576000600160009450945094505050611949565b81602001516000036113c3576040516311423d9560e01b815260040160405180910390fd5b6113cd8a8a612049565b6060830181905282516113df916120c2565b6080830181905260208301516113f59190612121565b60a083015260408101516000036114c5576114108a8a61212f565b604083015260006001600160a01b038b1663bd02d0f561142f8c612149565b6040518263ffffffff1660e01b815260040161144d91815260200190565b602060405180830381865afa15801561146a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148e9190615cc4565b905060006114a48460a001518560400151611954565b9050818111156114b15750805b955050508587119250600091506119499050565b6114cf8a8a61218c565b60c083018190526114df906121a6565b60e08301526001600160a01b038a1663bd02d0f56114fc8b6121b7565b6040518263ffffffff1660e01b815260040161151a91815260200190565b602060405180830381865afa158015611537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155b9190615cc4565b81526001600160a01b038a1663bd02d0f56115758b6121f9565b6040518263ffffffff1660e01b815260040161159391815260200190565b602060405180830381865afa1580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d49190615cc4565b602082015260c082015161010083018190526000908190811280156115f85750888a115b80611611575060008460c0015112801561161157508989115b9050801561164957825160a0850151111561162f576001915061164e565b82602001518460a00151101561164457600291505b61164e565b600191505b600182600281111561166257611662615cdd565b036116c457600061167289611a78565b61168c6116878760a001518760400151611954565b611a78565b6116969190615cf3565b9050898b10156116ac576116a981615a11565b90505b808560c001516116bc9190615bea565b610100860152505b60028260028111156116d8576116d8615cdd565b1480156116e8575060e084015115155b156117f5578b6001600160a01b031663bd02d0f56117058d61223c565b6040518263ffffffff1660e01b815260040161172391815260200190565b602060405180830381865afa158015611740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117649190615cc4565b60608401819052600090611779908a9061594d565b9050808560e00151116117ad576117938560e00151611a78565b8560c001516117a29190615d23565b6101008601526117f3565b60006117bc8660e00151611a78565b8660c001516117cb9190615d23565b9050806117e1838860e001516116879190615c12565b6117eb9190615cf3565b610100870152505b505b8b6001600160a01b031663bd02d0f561180d8d61228a565b6040518263ffffffff1660e01b815260040161182b91815260200190565b602060405180830381865afa158015611848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186c9190615cc4565b60808401526001600160a01b038c1663bd02d0f56118898d612149565b6040518263ffffffff1660e01b81526004016118a791815260200190565b602060405180830381865afa1580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e89190615cc4565b60a08401819052610100850151611901916000906122cd565b6101008501819052608084015160a085015161191e9291906122cd565b610120850181905261192f906121a6565b600085610120015113856101000151965096509650505050505b955095509592505050565b6000610118838368327cb2734119d3b7a9601e1b5b600061011584848461232d565b6000841580611983575083155b15611990575060006102fc565b60006119ba866119b366038d7ea4c6800068327cb2734119d3b7a9601e1b61594d565b8786612417565b905082156119d4576119cc818561243e565b9150506102fc565b6119cc848261597a565b6119e6614bb5565b82604001516001600160a01b0316846001600160a01b031603611a0e57506020810151610118565b82606001516001600160a01b0316846001600160a01b031603611a3657506040810151610118565b82602001516001600160a01b0316846001600160a01b031603611a5b57508051610118565b8251604051635f2394d160e11b81526110e491869160040161598e565b60006001600160ff1b03821115611ae25760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016110e4565b5090565b611aee614bcf565b6000611b288360000151846020015185606001518660800151611b148860400151515190565b604089015151602001518960e00151612461565b90506000611b3e846000015185604001516128eb565b9050611b538460000151856060015183612981565b606083015261012084015115611b8957835160408501515160200151611b8391908660e001518760600151612a90565b60a08301525b8160a00151606001518260a0015160200151836060015160600151846060015160200151856101800151611bbd919061593a565b611bc79190615c12565b611bd1919061593a565b611bdb9190615c12565b61016083015260a08201516060908101518184015190910151611bfe919061593a565b8261014001818151611c10919061593a565b90525083516040808601518051602081015190830151919092015151611c3893929190611d76565b604080840151606001919091528451908501515160200151611c68919060a0870151604080890151015151611df1565b604080840151608001919091528451908501515160200151611c98919060c0870151604080890151015151611df1565b826040015160a0018181525050611cb782604001518560400151611e0d565b60408301528351606085015160e0860151610100870151611cda93929190612c36565b82608001819052508161020001518260800151604001518360a0015160200151846060015160200151856101a00151611d13919061593a565b611d1d919061593a565b611d27919061593a565b611d319190615c12565b6101c08301819052604083015151611d489161593a565b6101e08301525092915050565b600061104885858585612c9e565b611d6b614cfc565b610115848484612981565b6000846001600160a01b031663bd02d0f5611d92868686612d17565b6040518263ffffffff1660e01b8152600401611db091815260200190565b602060405180830381865afa158015611dcd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110489190615cc4565b6000846001600160a01b031663bd02d0f5611d92868686612d58565b611e15614d24565b611e398360600151611e2c846020015160a0015190565b6020850151516001612da5565b83526080830151611e6090611e53846020015160c0015190565b6020850151516000612da5565b602084015260a0830151611e7d90611e53846020015160e0015190565b60408401525090919050565b6000604051602001611ec4906020808252601590820152741050d0d3d5539517d413d4d2551253d397d31254d5605a1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038416908201526060015b604051602081830303815290604052805190602001209050919050565b6000604051602001611f42906020808252600d908201526c13d4115397d2539511549154d5609a1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915284166060820152821515608082015260a0016040516020818303038152906040528051906020012090509392505050565b6000604051602001611ec49060208082526012908201527111955391125391d7d554111055115117d05560721b604082015260600190565b6000818311611ff157611fec8383615c12565b610118565b6101188284615c12565b6000604051602001611ec49060208082526022908201527f46554e44494e475f494e4352454153455f464143544f525f5045525f5345434f604082015261139160f21b606082015260800190565b6000826001600160a01b031663bd02d0f561206384612ddc565b6040518263ffffffff1660e01b815260040161208191815260200190565b602060405180830381865afa15801561209e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101189190615cc4565b600068327cb2734119d3b7a9601e1b8310156120e057506000611118565b68327cb2734119d3b7a9601e1b82036120fa575081611118565b600061211661210885612e19565b61211185612e19565b612e2a565b90506102fc81612e6c565b600061011883836000612e7d565b6000826001600160a01b031663bd02d0f561206384612ecc565b6000604051602001611ec4906020808252601d908201527f4d41585f46554e44494e475f464143544f525f5045525f5345434f4e44000000604082015260600190565b6000826001600160a01b031663dc97d96261206384612f00565b600080821215611ae2575060000390565b6000604051602001611ec4906020808252601c908201527b5448524553484f4c445f464f525f535441424c455f46554e44494e4760201b604082015260600190565b6000604051602001611ec4906020808252601e908201527f5448524553484f4c445f464f525f44454352454153455f46554e44494e470000604082015260600190565b6000604051602001611ec49060208082526022908201527f46554e44494e475f44454352454153455f464143544f525f5045525f5345434f604082015261139160f21b606082015260800190565b6000604051602001611ec4906020808252601d908201527f4d494e5f46554e44494e475f464143544f525f5045525f5345434f4e44000000604082015260600190565b6000806122d9856121a6565b9050838110156122e65750825b828111156122f15750815b6000851561231457612305611687876121a6565b61230f9087615d23565b612317565b60015b90508061232383611a78565b6111a49190615cf3565b60008080600019858709858702925082811083820303915050806000036123675783828161235d5761235d615964565b0492505050610118565b8084116123ae5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016110e4565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600081156124335761242c8585856001612f43565b90506102fc565b61104885858561232d565b600081600161244d828661593a565b6124579190615c12565b610118919061597a565b612469614bcf565b612471614bcf565b60c0810187905280516001600160a01b03861660409091015260006124978a8a88612f94565b865160c081019290925260808201929092526001600160a01b039283166020820152929092529091508a1663bd02d0f56124d1878a6132d3565b6040518263ffffffff1660e01b81526004016124ef91815260200190565b602060405180830381865afa15801561250c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125309190615cc4565b60e08301819052885190612545908690611954565b61254f919061597a565b6101a08301526001600160a01b038a1663bd02d0f561256d88613360565b6040518263ffffffff1660e01b815260040161258b91815260200190565b602060405180830381865afa1580156125a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cc9190615cc4565b6020830180519190915251511561269357896001600160a01b031663bd02d0f56125fd846020015160000151613395565b6040518263ffffffff1660e01b815260040161261b91815260200190565b602060405180830381865afa158015612638573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265c9190615cc4565b60208084018051820192909252905101511561269357612689826101a00151836020015160200151611954565b6020830151604001525b8151511561278957815160808082015160a090920191909152825160c08101519101516126c0919061593a565b825160600152815160c001516020808401510151111561272b5781516060015160208084015101511161270a5760208083015101518251606001516127059190615c12565b61270c565b805b825160a0908101919091528251015181111561272b57815160a0018190525b612742826101a00151836000015160a00151611954565b825161012001526101a0820151825160c0015161275f9190611954565b82516101009081019190915282519081015161012090910151612782919061593a565b825160e001525b81516101000151602083015160400151116127aa57815161010001516127b4565b8160200151604001515b6102008301819052825161012001516101a08401516127d39190615c12565b6127dd9190615c12565b6101008301526040516001600160a01b038b169063bd02d0f590612834906020016020808252601c908201527b2827a9a4aa24a7a72fa322a2afa922a1a2a4ab22a92fa320a1aa27a960211b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161286891815260200190565b602060405180830381865afa158015612885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a99190615cc4565b61012083018190526101008301516128c091611954565b61014083018190526101008301516128d89190615c12565b6101808301525098975050505050505050565b600080612909846128fe85516020015190565b6040860151516133f7565b90508061291b84602001516080015190565b111561294f576020830151608001515b604051634cd96ac160e11b81526004810191909152602481018290526044016110e4565b600061296084602001516080015190565b61296a9083615c12565b905061104861297b85602001515190565b82611954565b612989614cfc565b612991614cfc565b82815283516129a0908461597a565b816020018181525050846001600160a01b031663bd02d0f56040516020016129f9906020808252601d908201527f424f52524f57494e475f4645455f52454345495645525f464143544f52000000604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612a2d91815260200190565b602060405180830381865afa158015612a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6e9190615cc4565b604082018190526020820151612a8391611954565b6060820152949350505050565b612a98614cfc565b612aa0614cfc565b6000866001600160a01b031663bd02d0f5612aba88613471565b6040518263ffffffff1660e01b8152600401612ad891815260200190565b602060405180830381865afa158015612af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b199190615cc4565b905080600003612b2b575090506102fc565b612b358582611954565b8083528451612b44919061243e565b826020018181525050866001600160a01b031663bd02d0f5604051602001612b9d906020808252601f908201527f4c49515549444154494f4e5f4645455f52454345495645525f464143544f5200604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612bd191815260200190565b602060405180830381865afa158015612bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c129190615cc4565b604083018190526020830151612c2791611954565b60608301525095945050505050565b612c3e614d5a565b612c46614d5a565b6001600160a01b038316612c5b5790506102fc565b6001600160a01b0383168152612c7186846134ad565b60208201819052855190612c86908690611954565b612c90919061597a565b604082015295945050505050565b600080612cb8868585612cb389604001515190565b6135f3565b5050905080612ccc86602001516080015190565b1115612ce05760208501516080015161292b565b6000612cf186602001516080015190565b612cfb9083615c12565b9050612d0c61297b87602001515190565b979650505050505050565b6000604051602001611f42906020808252601b908201527a46554e44494e475f4645455f414d4f554e545f5045525f53495a4560281b604082015260600190565b6000604051602001611f429060208082526021908201527f434c41494d41424c455f46554e44494e475f414d4f554e545f5045525f53495a6040820152604560f81b606082015260800190565b600080612db28587615c12565b90506111a48482612dd666038d7ea4c6800068327cb2734119d3b7a9601e1b61594d565b86612417565b6000604051602001611ec490602080825260179082015276232aa72224a723afa2ac2827a722a72a2fa320a1aa27a960491b604082015260600190565b600061111864e8d4a510008361597a565b600082600003612e52578115612e41576000612e4b565b670de0b6b3a76400005b9050611118565b610118612e67612e6185613659565b8461370f565b61371b565b600061111864e8d4a510008361594d565b600083600003612e8f57506000610118565b8115612eb557612eae8468327cb2734119d3b7a9601e1b856001612f43565b9050610118565b6101158468327cb2734119d3b7a9601e1b8561232d565b6000604051602001611ec4906020808252600e908201526d232aa72224a723afa320a1aa27a960911b604082015260600190565b6000604051602001611ec4906020808252601f908201527f53415645445f46554e44494e475f464143544f525f5045525f5345434f4e4400604082015260600190565b600080612f5186868661232d565b90506001836002811115612f6757612f67615cdd565b148015612f84575060008480612f7f57612f7f615964565b868809115b15611048576111a460018261593a565b6000808080806001600160a01b038716612fbc575060009350839250829150819050806132c8565b6040516310ae4b6b60e31b81526000906001600160a01b038916906385725b5890612feb908a90600401615cb0565b602060405180830381865afa158015613008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302c9190615cc4565b90506000808080841561327a576040516306459e2360e51b8152600481018690526001600160a01b038d169063c8b3c46090602401602060405180830381865afa15801561307e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a29190615d51565b935060008c6001600160a01b0316631582a018866040518263ffffffff1660e01b81526004016130d29190615cb0565b602060405180830381865afa1580156130ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131139190615cc4565b60405163039af9eb60e01b8152600481018290529091506001600160a01b038e169063039af9eb906024016040805180830381865afa15801561315a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317e9190615d6e565b90945092506001600160a01b038e1663bd02d0f561319b83613761565b6040518263ffffffff1660e01b81526004016131b991815260200190565b602060405180830381865afa1580156131d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fa9190615cc4565b915060008d6001600160a01b03166371a6a790876040518263ffffffff1660e01b815260040161322a9190615cb0565b602060405180830381865afa158015613247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326b9190615cc4565b90508015613277578093505b50505b600061329b61271061328c858761594d565b613296919061597a565b6137a2565b905060006132a8856137a2565b905060006132b68383615c12565b979c50959a5095985096509450505050505b939792965093509350565b600060405160200161330c906020808252601390820152722827a9a4aa24a7a72fa322a2afa320a1aa27a960691b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b0385169082015282151560608201526080015b60405160208183030381529060405280519060200120905092915050565b6000604051602001611ec4906020808252600f908201526e282927afaa2920a222a92faa24a2a960891b604082015260600190565b60006040516020016133ce90602080825260139082015272282927afa224a9a1a7aaa72a2fa320a1aa27a960691b604082015260600190565b60408051601f198184030181528282528051602091820120908301528101839052606001611ef2565b6000836001600160a01b031663bd02d0f561341285856137c7565b6040518263ffffffff1660e01b815260040161343091815260200190565b602060405180830381865afa15801561344d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101159190615cc4565b6000604051602001611ec4906020808252601690820152752624a8aaa4a220aa24a7a72fa322a2afa320a1aa27a960511b604082015260600190565b600080836001600160a01b031663bd02d0f56040516020016134f49060208082526011908201527026a0ac2faaa4afa322a2afa320a1aa27a960791b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161352891815260200190565b602060405180830381865afa158015613545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135699190615cc4565b90506000846001600160a01b031663bd02d0f561358586613808565b6040518263ffffffff1660e01b81526004016135a391815260200190565b602060405180830381865afa1580156135c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e49190615cc4565b90508181106102fc5781611048565b6000806000806136088888600001518761383b565b9050600061361889898989613867565b9050600061362b8a8a60000151896133f7565b90506000613639838561594d565b90506000613647828461593a565b9c919b50929950975050505050505050565b6000670de0b6b3a764000082101561368757604051633621413760e21b8152600481018390526024016110e4565b600061369c670de0b6b3a76400008404613a87565b670de0b6b3a764000081029250905082811c670de0b6b3a763ffff1981016136c5575050919050565b6706f05b59d3b200005b801561370757670de0b6b3a7640000828002049150671bc16d674ec8000082106136ff579283019260019190911c905b60011c6136cf565b505050919050565b60006101188383613b6a565b6000680a688906bd8b000000821061374957604051634a4f26f160e01b8152600481018390526024016110e4565b670de0b6b3a7640000604083901b0461011881613c30565b60006040516020016133ce906020808252601b908201527a26a4a72fa0a32324a624a0aa22afa922aba0a9222fa320a1aa27a960291b604082015260600190565b60006127106137bd68327cb2734119d3b7a9601e1b8461594d565b611118919061597a565b600060405160200161330c906020808252601b908201527a21aaa6aaa620aa24ab22afa127a92927aba4a723afa320a1aa27a960291b604082015260600190565b6000604051602001611ec4906020808252600d908201526c2aa4afa322a2afa320a1aa27a960991b604082015260600190565b6000806138498585856142c2565b90508060000361385d576000915050610118565b6110488142615c12565b600080613876868686866142dd565b90508060000361388a5760009150506102fc565b6000866001600160a01b0316637ae1cfca6040516020016138e89060208082526023908201527f534b49505f424f52524f57494e475f4645455f464f525f534d414c4c45525f5360408201526249444560e81b606082015260800190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161391c91815260200190565b602060405180830381865afa158015613939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061395d9190615d92565b905080156139c557600061397388886001614315565b9050600061398389896000614315565b905085801561399157508082105b156139a35760009450505050506102fc565b851580156139b057508181105b156139c25760009450505050506102fc565b50505b60006139d5888888886000614368565b9050806000036139f857604051630d5f5aef60e31b815260040160405180910390fd5b6000613a09898960000151886143e1565b90508015613a2a57613a1f8989888786866143fc565b9450505050506102fc565b6000613a3b8a8a60000151896145ab565b90506000613a4986836120c2565b90506000613a578286612121565b90506000613a6a8d8d600001518c6145c6565b9050613a768282611954565b9d9c50505050505050505050505050565b6000600160801b8210613aa757608091821c91613aa4908261593a565b90505b600160401b8210613ac557604091821c91613ac2908261593a565b90505b600160201b8210613ae357602091821c91613ae0908261593a565b90505b620100008210613b0057601091821c91613afd908261593a565b90505b6101008210613b1c57600891821c91613b19908261593a565b90505b60108210613b3757600491821c91613b34908261593a565b90505b60048210613b5257600291821c91613b4f908261593a565b90505b60028210613b655761111860018261593a565b919050565b60008080600019848609848602925082811083820303915050670de0b6b3a76400008110613bae5760405163698d9a0160e11b8152600481018290526024016110e4565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff8211905082600003613bec5780670de0b6b3a7640000850401945050505050611118565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b821615613c505768016a09e667f3bcc9090260401c5b6001603e1b821615613c6b576801306fe0a31b7152df0260401c5b6001603d1b821615613c86576801172b83c7d517adce0260401c5b6001603c1b821615613ca15768010b5586cf9890f62a0260401c5b6001603b1b821615613cbc576801059b0d31585743ae0260401c5b6001603a1b821615613cd757680102c9a3e778060ee70260401c5b600160391b821615613cf25768010163da9fb33356d80260401c5b600160381b821615613d0d57680100b1afa5abcbed610260401c5b600160371b821615613d285768010058c86da1c09ea20260401c5b600160361b821615613d43576801002c605e2e8cec500260401c5b600160351b821615613d5e57680100162f3904051fa10260401c5b600160341b821615613d79576801000b175effdc76ba0260401c5b600160331b821615613d9457680100058ba01fb9f96d0260401c5b600160321b821615613daf5768010002c5cc37da94920260401c5b600160311b821615613dca576801000162e525ee05470260401c5b600160301b821615613de55768010000b17255775c040260401c5b6001602f1b821615613e00576801000058b91b5bc9ae0260401c5b6001602e1b821615613e1b57680100002c5c89d5ec6d0260401c5b6001602d1b821615613e365768010000162e43f4f8310260401c5b6001602c1b821615613e5157680100000b1721bcfc9a0260401c5b6001602b1b821615613e6c5768010000058b90cf1e6e0260401c5b6001602a1b821615613e87576801000002c5c863b73f0260401c5b600160291b821615613ea257680100000162e430e5a20260401c5b600160281b821615613ebd576801000000b1721835510260401c5b600160271b821615613ed857680100000058b90c0b490260401c5b600160261b821615613ef35768010000002c5c8601cc0260401c5b600160251b821615613f0e576801000000162e42fff00260401c5b600160241b821615613f295768010000000b17217fbb0260401c5b600160231b821615613f44576801000000058b90bfce0260401c5b600160221b821615613f5f57680100000002c5c85fe30260401c5b600160211b821615613f7a5768010000000162e42ff10260401c5b600160201b821615613f9557680100000000b17217f80260401c5b6380000000821615613fb05768010000000058b90bfc0260401c5b6340000000821615613fcb576801000000002c5c85fe0260401c5b6320000000821615613fe657680100000000162e42ff0260401c5b6310000000821615614001576801000000000b17217f0260401c5b630800000082161561401c57680100000000058b90c00260401c5b63040000008216156140375768010000000002c5c8600260401c5b6302000000821615614052576801000000000162e4300260401c5b630100000082161561406d5768010000000000b172180260401c5b62800000821615614087576801000000000058b90c0260401c5b624000008216156140a157680100000000002c5c860260401c5b622000008216156140bb5768010000000000162e430260401c5b621000008216156140d557680100000000000b17210260401c5b620800008216156140ef5768010000000000058b910260401c5b62040000821615614109576801000000000002c5c80260401c5b6202000082161561412357680100000000000162e40260401c5b6201000082161561413c5761b172600160401b010260401c5b618000821615614154576158b9600160401b010260401c5b61400082161561416c57612c5d600160401b010260401c5b6120008216156141845761162e600160401b010260401c5b61100082161561419c57610b17600160401b010260401c5b6108008216156141b45761058c600160401b010260401c5b6104008216156141cc576102c6600160401b010260401c5b6102008216156141e457610163600160401b010260401c5b6101008216156141fb5760b1600160401b010260401c5b6080821615614211576059600160401b010260401c5b604082161561422757602c600160401b010260401c5b602082161561423d576016600160401b010260401c5b601082161561425357600b600160401b010260401c5b6008821615614269576006600160401b010260401c5b600482161561427f576003600160401b010260401c5b6002821615614295576001600160401b010260401c5b60018216156142ab576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b6000836001600160a01b031663bd02d0f561341285856145e1565b600080821561430e5760006142f3878786614633565b855160200151909150614306908261594d565b915050611048565b6111a48686855b60008061432a846040015185606001516110ed565b905060006143438686600001518760400151878661111e565b9050600061435c8787600001518860600151888761111e565b9050612d0c818361593a565b6000808361437a578560600151614380565b85604001515b9050600061438f88888461467a565b9050600084156143bd57856143ac578660400151602001516143b6565b8660200151602001515b90506143d7565b856143cd576040870151516143d4565b6020870151515b90505b6101b6818361594d565b6000836001600160a01b031663bd02d0f56134128585614718565b60008061440c8888888888614752565b90506000886001600160a01b031663bd02d0f561442d8a600001518a614780565b6040518263ffffffff1660e01b815260040161444b91815260200190565b602060405180830381865afa158015614468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061448c9190615cc4565b9050600061449a8383611954565b905084831180156144b657508468327cb2734119d3b7a9601e1b115b156101b65760006144c78685615c12565b905060008b6001600160a01b031663bd02d0f56144e88d600001518d6147bb565b6040518263ffffffff1660e01b815260040161450691815260200190565b602060405180830381865afa158015614523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145479190615cc4565b90506000848211156145605761455d8583615c12565b90505b60006145788968327cb2734119d3b7a9601e1b615c12565b905080614585858461594d565b61458f919061597a565b614599908661593a565b9e9d5050505050505050505050505050565b6000836001600160a01b031663bd02d0f5613412858561480b565b6000836001600160a01b031663bd02d0f5613412858561484a565b600060405160200161330c9060208082526026908201527f43554d554c41544956455f424f52524f57494e475f464143544f525f5550444160408201526515115117d05560d21b606082015260800190565b600080614648846040015185606001516110ed565b9050600061466186866000015187604001518786614880565b9050600061435c87876000015188606001518887614880565b60008061468f846040015185606001516110ed565b905080856001600160a01b031663bd02d0f56146af87600001518761489d565b6040518263ffffffff1660e01b81526004016146cd91815260200190565b602060405180830381865afa1580156146ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061470e9190615cc4565b611048919061597a565b600060405160200161330c9060208082526014908201527327a82a24a6a0a62faaa9a0a3a2afa320a1aa27a960611b604082015260600190565b6000806147648787600001518761490b565b905060006147728483611954565b905060006101b68683612121565b600060405160200161330c906020808252601590820152742120a9a2afa127a92927aba4a723afa320a1aa27a960591b604082015260600190565b600060405160200161330c9060208082526024908201527f41424f56455f4f5054494d414c5f55534147455f424f52524f57494e475f464160408201526321aa27a960e11b606082015260800190565b600060405160200161330c906020808252601990820152782127a92927aba4a723afa2ac2827a722a72a2fa320a1aa27a960391b604082015260600190565b600060405160200161330c9060208082526010908201526f2127a92927aba4a723afa320a1aa27a960811b604082015260600190565b600081866001600160a01b031663bd02d0f561113b888888614926565b60006040516020016148ce906020808252600b908201526a1413d3d317d05353d5539560aa1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038086169183019190915283166060820152608001613342565b6000836001600160a01b031663bd02d0f56134128585614963565b6000604051602001611f42906020808252601790820152764f50454e5f494e5445524553545f494e5f544f4b454e5360481b604082015260600190565b600060405160200161330c906020808252601c908201527b27a822a72fa4a72a22a922a9aa2fa922a9a2a92b22afa320a1aa27a960211b604082015260600190565b6040518060a0016040528060001515815260200160008152602001600081526020016149cf614d84565b81526020016149dc614d84565b905290565b6040805160e0810190915260008152602081016149fc614a64565b8152602001614a09614bcf565b8152602001614a496040518060c0016040528060008152602001600081526020016000151581526020016000815260200160008152602001600081525090565b81526020016000815260200160008152602001600081525090565b6040805160c081019091526000606082018181526080830182905260a083019190915281908152602001614ae4604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526040805160208181019092526000815291015290565b604051806101000160405280614b10614d84565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e081019091526000606082018181526080830182905260a0830182905260c0830191909152815260208101614b7f614bb5565b8152602001600081525090565b6040518060600160405280614b9f614bb5565b8152602001614bac614bb5565b81526020016149dc5b604051806040016040528060008152602001600081525090565b604051806102200160405280614c466040518061014001604052806000801916815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001614c6f60405180606001604052806000815260200160008152602001600081525090565b8152602001614c7c614d24565b8152602001614c89614cfc565b8152602001614c96614d5a565b8152602001614ca3614cfc565b8152602001614cb0614bb5565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6040518060400160405280614bac614bb5565b6001600160a01b0381168114614dac57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614de757614de7614daf565b60405290565b604051608081016001600160401b0381118282101715614de757614de7614daf565b60405161014081016001600160401b0381118282101715614de757614de7614daf565b604051601f8201601f191681016001600160401b0381118282101715614e5a57614e5a614daf565b604052919050565b8035613b6581614d97565b600060408284031215614e7f57600080fd5b604080519081016001600160401b0381118282101715614ea157614ea1614daf565b604052823581526020928301359281019290925250919050565b600060c08284031215614ecd57600080fd5b614ed5614dc5565b9050614ee18383614e6d565b8152614ef08360408401614e6d565b6020820152614f028360808401614e6d565b604082015292915050565b6000806000838503610160811215614f2457600080fd5b8435614f2f81614d97565b93506080601f1982011215614f4357600080fd5b50614f4c614ded565b6020850135614f5a81614d97565b81526040850135614f6a81614d97565b60208201526060850135614f7d81614d97565b60408201526080850135614f9081614d97565b60608201529150614fa48560a08601614ebb565b90509250925092565b80518252602090810151910152565b614fc7828251614fad565b6020810151614fd96040840182614fad565b505050565b600061016082019050825115158252602083015160208301526040830151604083015260608301516150136060840182614fbc565b50608083015161502660e0840182614fbc565b5092915050565b8015158114614dac57600080fd5b6000806000806000806000610180888a03121561505757600080fd5b873561506281614d97565b9650602088013561507281614d97565b9550604088013594506150888960608a01614ebb565b935061012088013592506101408801356150a181614d97565b91506101608801356150b28161502d565b8091505092959891949750929550565b6001600160a01b03169052565b805160018060a01b03815116835260018060a01b03602082015116602084015260018060a01b0360408201511660408401525060208101518051606084015260208101516080840152604081015160a0840152606081015160c0840152608081015160e084015260a081015161010084015260c081015161012084015260e0810151610140840152610100810151610160840152610120810151610180840152506040810151614fd96101a08401825115159052565b80518252602081015161519b60208401826150c2565b5060408101516151ae60408401826150c2565b50606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008101516101008301526101208101516101208301525050565b805182526020810151602083015260408101516040830152606081015160608301525050565b80518252602081015161523960208401826150cf565b50604081015161524e6101e084018251615185565b602081810151805161032086015280820151610340860152604090810151610360860152808301518051610380870152918201516103a08601528101516103c08501526060808201516103e0860152608082015161040086015260a0909101516104208501528101516152c56104408501826151fd565b50608081015180516001600160a01b03166104c085015260208101516104e08501526040015161050084015260a08101516153046105208501826151fd565b5060c08101516153186105a0850182614fad565b5060e08101516105e08401526101008101516106008401526101208101516106208401526101408101516106408401526101608101516106608401526101808101516106808401526101a08101516106a08401526101c08101516106c08401526101e08101516106e084015261020001516107008301526060818101518051610720850152602081015161074085015260408101511515610760850152908101516107808401526080808201516107a085015260a0918201516107c08501528201516107e084015281015161080083015260c0015161082090910152565b61084081016111188284615223565b6000806000806080858703121561541b57600080fd5b843561542681614d97565b9350602085013561543681614d97565b93969395505050506040820135916060013590565b602080825282518282018190526000918401906040840190835b8181101561092c576154788385516150cf565b602093909301926101c09290920191600101615465565b60006001600160401b038211156154a8576154a8614daf565b5060051b60200190565b600082601f8301126154c357600080fd5b81356154d66154d18261548f565b614e32565b80828252602082019150602060c084028601019250858311156154f857600080fd5b602085015b8381101561551f5761550f8782614ebb565b835260209092019160c0016154fd565b5095945050505050565b600080600080600060a0868803121561554157600080fd5b853561554c81614d97565b9450602086013561555c81614d97565b935060408601356001600160401b0381111561557757600080fd5b8601601f8101881361558857600080fd5b80356155966154d18261548f565b8082825260208201915060208360051b85010192508a8311156155b857600080fd5b6020840193505b828410156155da5783358252602093840193909101906155bf565b955050505060608601356001600160401b038111156155f857600080fd5b615604888289016154b2565b92505061561360808701614e62565b90509295509295909350565b602080825282518282018190526000918401906040840190835b8181101561092c5761564c838551615223565b602093909301926108409290920191600101615639565b600080600080600080600080610100898b03121561568057600080fd5b883561568b81614d97565b9750602089013561569b81614d97565b965060408901356156ab81614d97565b955060608901356001600160401b038111156156c657600080fd5b89016000601f82018c136156d957600080fd5b81356156e76154d18261548f565b8082825260208201915060208360051b86010192508e83111561570957600080fd5b6020850194505b8285101561573457843561572381614d97565b825260209485019490910190615710565b985050505060808a013590506001600160401b0381111561575457600080fd5b6157608b828c016154b2565b94505061576f60a08a01614e62565b979a969950949793969295929450505060c08201359160e0013590565b6001600160a01b03929092168252602082015260400190565b6000602082840312156157b757600080fd5b604051602081016001600160401b03811182821017156157d9576157d9614daf565b806040525080915082516157ec8161502d565b905292915050565b60008183036101c08112801561580957600080fd5b506000615814614dc5565b6060831215615821578182fd5b615829614dc5565b855161583481614d97565b8152602086015161584481614d97565b6020820152604086015161585781614d97565b60408201528152610140605f1984011215615870578182fd5b615878614e0f565b606086810151825260808088015160208085019190915260a0808a0151604086015260c0808b01519486019490945260e0808b015193860193909352610100808b015191860191909152610120808b0151948601949094526101408a0151928501929092526101608901519184019190915261018088015191830182905283018290529093509150612c90866101a087016157a5565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561111857611118615924565b808202811582820484141761111857611118615924565b634e487b7160e01b600052601260045260246000fd5b60008261598957615989615964565b500490565b6001600160a01b0392831681529116602082015260400190565b600060808284031280156159bb57600080fd5b506159c4614ded565b82516159cf81614d97565b815260208301516159df81614d97565b602082015260408301516159f281614d97565b60408201526060830151615a0581614d97565b60608201529392505050565b6000600160ff1b8201615a2657615a26615924565b5060000390565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b615a6b828251614fad565b6020810151615a7d6040840182614fad565b506040810151614fd96080840182614fad565b6001600160a01b03891681526102008101615aae602083018a615a2d565b615abb60a0830189615a60565b6101608201969096526101808101949094526101a08401929092526101c083015215156101e0909101529392505050565b600060c0828403128015615aff57600080fd5b5060405160009060c081016001600160401b0381118282101715615b2557615b25614daf565b60409081528451825260208086015190830152840151615b448161502d565b6040820152606084810151908201526080808501519082015260a09384015193810193909352509092915050565b6001600160a01b03861681526103408101615b906020830187615a2d565b615b9d60a0830186615a60565b615bab6101608301856150cf565b826103208301529695505050505050565b600080600060608486031215615bd157600080fd5b5050815160208301516040909301519094929350919050565b8082018281126000831280158216821582161715615c0a57615c0a615924565b505092915050565b8181038181111561111857611118615924565b600060208284031215615c3757600080fd5b81516001600160401b03811115615c4d57600080fd5b8201601f81018413615c5e57600080fd5b8051615c6c6154d18261548f565b8082825260208201915060208360051b850101925086831115615c8e57600080fd5b6020840193505b828410156111a4578351825260209384019390910190615c95565b6001600160a01b0391909116815260200190565b600060208284031215615cd657600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b80820260008212600160ff1b84141615615d0f57615d0f615924565b818105831482151761111857611118615924565b600082615d3257615d32615964565b600160ff1b821460001984141615615d4c57615d4c615924565b500590565b600060208284031215615d6357600080fd5b815161011881614d97565b60008060408385031215615d8157600080fd5b505080516020909101519092909150565b600060208284031215615da457600080fd5b81516101188161502d56fea26469706673582212201f710cb04fe36730ee48bdae14f17f84ceff014d69eee9ab75756922e090b68464736f6c634300081d0033