0 txs
0 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
0x615e646200003b600b82828239805160001a60731461002e57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100615760003560e01c80630dc7f3eb1461006657806335e084c81461008f578063505d9cb2146100af5780636aeb8755146100cf57806378109081146100ef575b600080fd5b61007961007436600461502e565b610102565b60405161008691906150ff565b60405180910390f35b6100a261009d36600461515c565b61011f565b60405161008691906154df565b6100c26100bd3660046154ee565b6101c3565b6040516100869190615534565b6100e26100dd36600461561b565b61030f565b604051610086919061570b565b6100e26100fd36600461574e565b6103fa565b61010a614ae4565b610115848484610579565b90505b9392505050565b610127614b20565b60405163fdfc26f360e01b81526000907362de729c2529998d28f59cf75a8300630d2f18bc9063fdfc26f390610163908c908b9060040161586d565b6101a060405180830381865af4158015610181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a591906158d5565b90506101b689898389898989610927565b9998505050505050505050565b606060006101d386868686610f9b565b9050600081516001600160401b038111156101f0576101f0614ed0565b60405190808252806020026020018201604052801561022957816020015b610216614b8c565b81526020019060019003908161020e5790505b50905060005b825181101561030257600083828151811061024c5761024c6159d6565b602002602001015190507362de729c2529998d28f59cf75a8300630d2f18bc63fdfc26f38a836040518363ffffffff1660e01b815260040161028f92919061586d565b6101a060405180830381865af41580156102ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d191906158d5565b8383815181106102e3576102e36159d6565b60200260200101819052505080806102fa90615a02565b91505061022f565b509150505b949350505050565b6060600084516001600160401b0381111561032c5761032c614ed0565b60405190808252806020026020018201604052801561036557816020015b610352614b20565b81526020019060019003908161034a5790505b50905060005b85518110156103ed576000868281518110610388576103886159d6565b602002602001015190506103bc8989838986815181106103aa576103aa6159d6565b602002602001015160008a600161011f565b8383815181106103ce576103ce6159d6565b60200260200101819052505080806103e590615a02565b91505061036b565b5090505b95945050505050565b6060600061040a8a898686610f9b565b9050600081516001600160401b0381111561042757610427614ed0565b60405190808252806020026020018201604052801561046057816020015b61044d614b20565b8152602001906001900390816104455790505b50905060005b825181101561056a576000838281518110610483576104836159d6565b6020026020010151905060007362de729c2529998d28f59cf75a8300630d2f18bc63fdfc26f38f846040518363ffffffff1660e01b81526004016104c892919061586d565b6101a060405180830381865af41580156104e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a91906158d5565b905060006105248c8c61051f85516020015190565b611027565b90506105378f8f848460008f6001610927565b858581518110610549576105496159d6565b6020026020010181905250505050808061056290615a02565b915050610466565b509a9950505050505050505050565b610581614ae4565b610589614ae4565b610591614c1d565b60006105a5866040015187606001516110cd565b90506105bd87876000015188604001516001856110fe565b82515152855160608701516105d69189916001856110fe565b82515160200152855160408701516105f29189916000856110fe565b825160200151528551606087015161060e9189916000856110fe565b825160209081015181019190915282515190810151905161062f9190615a1b565b602080840191909152825181015190810151905161064d9190615a1b565b60408301526020820151158061066557506040820151155b1561067557829350505050610118565b61068387876000015161118e565b606083015260408201516020830151116106a15781604001516106a7565b81602001515b8260800181815250506106cd878760000151846020015185604001518660600151611226565b60408601521515845260208401819052608083015160608401516106f9926106f491615a2e565b611934565b60a0830181905261070b908290615a5b565b60a083015282511561075c5760a0820151825151516020840151610730929190611949565b60c083015260a082015182515160209081015190840151610752929190611949565b60e08301526107a2565b60a0820151825160200151516040840151610778929190611949565b60c083015260a082015182516020908101510151604084015161079c929190611949565b60e08301525b8251156108605760c08201518251515160208088015101516107c79291906001611956565b6060840151515260e08201518251516020908101516040880151909101516107f29291906001611956565b83606001516000015160200181815250506108208260c0015183604001518760200151602001516000611956565b836080015160200151600001818152505061084e8260e0015183604001518760400151602001516000611956565b6080840151602090810151015261091c565b6108858260c00151836000015160200151600001518760200151602001516001611956565b83606001516020015160000181815250506108bb8260e00151836000015160200151602001518760400151602001516001611956565b83606001516020015160200181815250506108e98260c0015183602001518760200151602001516000611956565b6080840151515260e08201516020808401516040880151909101516109119291906000611956565b608084015151602001525b509095945050505050565b61092f614b20565b600061093a87515190565b6001600160a01b03160361096157604051634dfbbff360e01b815260040160405180910390fd5b610969614b20565b610971614c68565b6020820188905273846d1b8c17adfa67fffefe83b7dbebfd598f910663a8d8fff58b61099f8b516020015190565b6040518363ffffffff1660e01b81526004016109bc929190615a6f565b608060405180830381865af41580156109d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fd9190615a89565b80825260208301515160400151610a1491896119be565b60208201528315610a2b5760208083015101515195505b80518751602080850151015151733b753c0d0ae55530f24532b8bb9d0bacd5b675c09263146fa98e928e926020808901518101510151610a6a8d611a58565b610a7390615af0565b60208a015160400151516040518863ffffffff1660e01b8152600401610a9f9796959493929190615b3f565b606060405180830381865af4158015610abc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae09190615b93565b606080840191825260408051610140810182526001600160a01b03808f1682528d811660208084019190915280880151838501528601518285015293515160009081126080830152855190920151841660a0820152845190920151831660c083015260e08201899052918716610100820152610120810191909152610b6481611ac6565b604084015260208301518251610b7c918d918b611d35565b604083018190526020830151610b94918d9190611d43565b6040840151606001528151600090610bae908d908b610102565b9050610bda8c610bc48660200151516020015190565b6020870151805160409081015191015151611d56565b604085810151015160600152602080850151510151610c11908d908551604001516020880151610c0c90604001515190565b611dd1565b604085810151015160800152602080850151510151610c41908d9085516060015160208801516040015151611dd1565b60408086015181015160a00191909152835160608101519101516000916001600160a01b03918216911614610c77576001610c7a565b60025b60ff169050610c8f8560200151604001515190565b15610d6c5760808201515151610ca6908290615a2e565b856040015160400151608001818151610cbf9190615a1b565b90525060808201515160200151610cd7908290615a2e565b85604001516040015160a001818151610cf09190615a1b565b90525083516040015160208601516001600160a01b0390911690610d1690516040015190565b6001600160a01b031603610d575760608201515151610d36908290615a2e565b856040015160400151606001818151610d4f9190615a1b565b905250610e4c565b60608201515160200151610d36908290615a2e565b60808201516020015151610d81908290615a2e565b856040015160400151608001818151610d9a9190615a1b565b90525060808201516020908101510151610db5908290615a2e565b85604001516040015160a001818151610dce9190615a1b565b90525083516040015160208601516001600160a01b0390911690610df490516040015190565b6001600160a01b031603610e175760608201516020015151610d36908290615a2e565b8082606001516020015160200151610e2f9190615a2e565b856040015160400151606001818151610e489190615a1b565b9052505b610e628560400151604001518660200151611ded565b85604001516040018190525073c4bb9a78e82aa1cd437db1bed9285bab3e3c851163e22de7938e86600001518d89602001518e6040518663ffffffff1660e01b8152600401610eb5959493929190615bcf565b606060405180830381865af4158015610ed2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef69190615c41565b5060a087015260808601819052606086015151610f139190615c6f565b60c08601526040808601516102008101516080820151909201516060820151602001516101a0909201519091610f4891615a1b565b610f529190615a1b565b610f5c9190615c97565b604080870180516101c090810193909352519081015151910151610f809190615a1b565b60408601516101e0015250929b9a5050505050505050505050565b6060846001600160a01b031663f069052a610fb586611e69565b6040516001600160e01b031960e084901b16815260048101919091526024810186905260448101859052606401600060405180830381865afa158015610fff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103f19190810190615caa565b61102f614cad565b60005b84518110156110a857600085828151811061104f5761104f6159d6565b60200260200101519050836001600160a01b0316816001600160a01b03160361109557848281518110611084576110846159d6565b602002602001015192505050610118565b50806110a081615a02565b915050611032565b508160405163eb1947dd60e01b81526004016110c49190615d2f565b60405180910390fd5b6000816001600160a01b0316836001600160a01b0316146110ef5760016110f2565b60025b60ff1690505b92915050565b600081866001600160a01b031663bd02d0f561111b888888611eef565b6040518263ffffffff1660e01b815260040161113991815260200190565b602060405180830381865afa158015611156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117a9190615d43565b6111849190615a5b565b9695505050505050565b600080836001600160a01b031663bd02d0f56111a985611f81565b6040518263ffffffff1660e01b81526004016111c791815260200190565b602060405180830381865afa1580156111e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112089190615d43565b90508060000361121c5760009150506110f8565b6103078142615c97565b6000806000611281604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61128b8787611fb9565b81526112978688615a1b565b8160200181815250506112d96040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b896001600160a01b031663bd02d0f56112f18b611fdb565b6040518263ffffffff1660e01b815260040161130f91815260200190565b602060405180830381865afa15801561132c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113509190615d43565b6040820152815115801561136657506040810151155b1561137e576000600160009450945094505050611929565b81602001516000036113a3576040516311423d9560e01b815260040160405180910390fd5b6113ad8a8a612029565b6060830181905282516113bf916120a2565b6080830181905260208301516113d59190612101565b60a083015260408101516000036114a5576113f08a8a61210f565b604083015260006001600160a01b038b1663bd02d0f561140f8c612129565b6040518263ffffffff1660e01b815260040161142d91815260200190565b602060405180830381865afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190615d43565b905060006114848460a001518560400151611934565b9050818111156114915750805b955050508587119250600091506119299050565b6114af8a8a61216c565b60c083018190526114bf90612186565b60e08301526001600160a01b038a1663bd02d0f56114dc8b612197565b6040518263ffffffff1660e01b81526004016114fa91815260200190565b602060405180830381865afa158015611517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153b9190615d43565b81526001600160a01b038a1663bd02d0f56115558b6121d9565b6040518263ffffffff1660e01b815260040161157391815260200190565b602060405180830381865afa158015611590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b49190615d43565b602082015260c082015161010083018190526000908190811280156115d85750888a115b806115f1575060008460c001511280156115f157508989115b9050801561162957825160a0850151111561160f576001915061162e565b82602001518460a00151101561162457600291505b61162e565b600191505b600182600281111561164257611642615d5c565b036116a457600061165289611a58565b61166c6116678760a001518760400151611934565b611a58565b6116769190615d72565b9050898b101561168c5761168981615af0565b90505b808560c0015161169c9190615c6f565b610100860152505b60028260028111156116b8576116b8615d5c565b1480156116c8575060e084015115155b156117d5578b6001600160a01b031663bd02d0f56116e58d61221c565b6040518263ffffffff1660e01b815260040161170391815260200190565b602060405180830381865afa158015611720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117449190615d43565b60608401819052600090611759908a90615a2e565b9050808560e001511161178d576117738560e00151611a58565b8560c001516117829190615da2565b6101008601526117d3565b600061179c8660e00151611a58565b8660c001516117ab9190615da2565b9050806117c1838860e001516116679190615c97565b6117cb9190615d72565b610100870152505b505b8b6001600160a01b031663bd02d0f56117ed8d61226a565b6040518263ffffffff1660e01b815260040161180b91815260200190565b602060405180830381865afa158015611828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184c9190615d43565b60808401526001600160a01b038c1663bd02d0f56118698d612129565b6040518263ffffffff1660e01b815260040161188791815260200190565b602060405180830381865afa1580156118a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c89190615d43565b60a084018190526101008501516118e1916000906122ad565b6101008501819052608084015160a08501516118fe9291906122ad565b610120850181905261190f90612186565b600085610120015113856101000151965096509650505050505b955095509592505050565b6000610118838368327cb2734119d3b7a9601e1b5b600061011584848461230d565b6000841580611963575083155b1561197057506000610307565b600061199a8661199366038d7ea4c6800068327cb2734119d3b7a9601e1b615a2e565b87866123f7565b905082156119b4576119ac818561241e565b915050610307565b6119ac8482615a5b565b6119c6614cd6565b82604001516001600160a01b0316846001600160a01b0316036119ee57506020810151610118565b82606001516001600160a01b0316846001600160a01b031603611a1657506040810151610118565b82602001516001600160a01b0316846001600160a01b031603611a3b57508051610118565b8251604051635f2394d160e11b81526110c4918691600401615a6f565b60006001600160ff1b03821115611ac25760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016110c4565b5090565b611ace614cf0565b6000611b088360000151846020015185606001518660800151611af48860400151515190565b604089015151602001518960e00151612441565b90506000611b1e846000015185604001516128cb565b9050611b338460000151856060015183612961565b606083015261012084015115611b6957835160408501515160200151611b6391908660e001518760600151612a70565b60a08301525b8160a00151606001518260a0015160200151836060015160600151846060015160200151856101800151611b9d9190615a1b565b611ba79190615c97565b611bb19190615a1b565b611bbb9190615c97565b61016083015260a08201516060908101518184015190910151611bde9190615a1b565b8261014001818151611bf09190615a1b565b90525083516040808601518051602081015190830151919092015151611c1893929190611d56565b604080840151606001919091528451908501515160200151611c48919060a0870151604080890151015151611dd1565b604080840151608001919091528451908501515160200151611c78919060c0870151604080890151015151611dd1565b826040015160a0018181525050611c9782604001518560400151611ded565b60408301528351606085015160e0860151610100870151611cba93929190612c16565b82608001819052508161020001518260800151604001518360a0015160200151846060015160200151856101a00151611cf39190615a1b565b611cfd9190615a1b565b611d079190615a1b565b611d119190615c97565b6101c08301819052604083015151611d2891615a1b565b6101e08301525092915050565b60006103f185858585612c7e565b611d4b614e1d565b610115848484612961565b6000846001600160a01b031663bd02d0f5611d72868686612cf6565b6040518263ffffffff1660e01b8152600401611d9091815260200190565b602060405180830381865afa158015611dad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f19190615d43565b6000846001600160a01b031663bd02d0f5611d72868686612d37565b611df5614e45565b611e198360600151611e0c84602001516080015190565b6020850151516001612d84565b83526080830151611e4090611e33846020015160a0015190565b6020850151516000612d84565b602084015260a0830151611e5d90611e33846020015160c0015190565b60408401525090919050565b6000604051602001611ea4906020808252601590820152741050d0d3d5539517d413d4d2551253d397d31254d5605a1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038416908201526060015b604051602081830303815290604052805190602001209050919050565b6000604051602001611f22906020808252600d908201526c13d4115397d2539511549154d5609a1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915284166060820152821515608082015260a0016040516020818303038152906040528051906020012090509392505050565b6000604051602001611ea49060208082526012908201527111955391125391d7d554111055115117d05560721b604082015260600190565b6000818311611fd157611fcc8383615c97565b610118565b6101188284615c97565b6000604051602001611ea49060208082526022908201527f46554e44494e475f494e4352454153455f464143544f525f5045525f5345434f604082015261139160f21b606082015260800190565b6000826001600160a01b031663bd02d0f561204384612dbb565b6040518263ffffffff1660e01b815260040161206191815260200190565b602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101189190615d43565b600068327cb2734119d3b7a9601e1b8310156120c0575060006110f8565b68327cb2734119d3b7a9601e1b82036120da5750816110f8565b60006120f66120e885612df8565b6120f185612df8565b612e09565b905061030781612e4b565b600061011883836000612e5c565b6000826001600160a01b031663bd02d0f561204384612eab565b6000604051602001611ea4906020808252601d908201527f4d41585f46554e44494e475f464143544f525f5045525f5345434f4e44000000604082015260600190565b6000826001600160a01b031663dc97d96261204384612edf565b600080821215611ac2575060000390565b6000604051602001611ea4906020808252601c908201527b5448524553484f4c445f464f525f535441424c455f46554e44494e4760201b604082015260600190565b6000604051602001611ea4906020808252601e908201527f5448524553484f4c445f464f525f44454352454153455f46554e44494e470000604082015260600190565b6000604051602001611ea49060208082526022908201527f46554e44494e475f44454352454153455f464143544f525f5045525f5345434f604082015261139160f21b606082015260800190565b6000604051602001611ea4906020808252601d908201527f4d494e5f46554e44494e475f464143544f525f5045525f5345434f4e44000000604082015260600190565b6000806122b985612186565b9050838110156122c65750825b828111156122d15750815b600085156122f4576122e561166787612186565b6122ef9087615da2565b6122f7565b60015b90508061230383611a58565b6111849190615d72565b60008080600019858709858702925082811083820303915050806000036123475783828161233d5761233d615a45565b0492505050610118565b80841161238e5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016110c4565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600081156124135761240c8585856001612f22565b9050610307565b6103f185858561230d565b600081600161242d8286615a1b565b6124379190615c97565b6101189190615a5b565b612449614cf0565b612451614cf0565b60c0810187905280516001600160a01b03861660409091015260006124778a8a88612f73565b865160c081019290925260808201929092526001600160a01b039283166020820152929092529091508a1663bd02d0f56124b1878a61328f565b6040518263ffffffff1660e01b81526004016124cf91815260200190565b602060405180830381865afa1580156124ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125109190615d43565b60e08301819052885190612525908690611934565b61252f9190615a5b565b6101a08301526001600160a01b038a1663bd02d0f561254d8861331c565b6040518263ffffffff1660e01b815260040161256b91815260200190565b602060405180830381865afa158015612588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ac9190615d43565b6020830180519190915251511561267357896001600160a01b031663bd02d0f56125dd846020015160000151613351565b6040518263ffffffff1660e01b81526004016125fb91815260200190565b602060405180830381865afa158015612618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263c9190615d43565b60208084018051820192909252905101511561267357612669826101a00151836020015160200151611934565b6020830151604001525b8151511561276957815160808082015160a090920191909152825160c08101519101516126a09190615a1b565b825160600152815160c001516020808401510151111561270b578151606001516020808401510151116126ea5760208083015101518251606001516126e59190615c97565b6126ec565b805b825160a0908101919091528251015181111561270b57815160a0018190525b612722826101a00151836000015160a00151611934565b825161012001526101a0820151825160c0015161273f9190611934565b825161010090810191909152825190810151610120909101516127629190615a1b565b825160e001525b815161010001516020830151604001511161278a5781516101000151612794565b8160200151604001515b6102008301819052825161012001516101a08401516127b39190615c97565b6127bd9190615c97565b6101008301526040516001600160a01b038b169063bd02d0f590612814906020016020808252601c908201527b2827a9a4aa24a7a72fa322a2afa922a1a2a4ab22a92fa320a1aa27a960211b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161284891815260200190565b602060405180830381865afa158015612865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128899190615d43565b61012083018190526101008301516128a091611934565b61014083018190526101008301516128b89190615c97565b6101808301525098975050505050505050565b6000806128e9846128de85516020015190565b6040860151516133b3565b9050806128fb84602001516060015190565b111561292f576020830151606001515b604051634cd96ac160e11b81526004810191909152602481018290526044016110c4565b600061294084602001516060015190565b61294a9083615c97565b90506103f161295b85602001515190565b82611934565b612969614e1d565b612971614e1d565b82815283516129809084615a5b565b816020018181525050846001600160a01b031663bd02d0f56040516020016129d9906020808252601d908201527f424f52524f57494e475f4645455f52454345495645525f464143544f52000000604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612a0d91815260200190565b602060405180830381865afa158015612a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4e9190615d43565b604082018190526020820151612a6391611934565b6060820152949350505050565b612a78614e1d565b612a80614e1d565b6000866001600160a01b031663bd02d0f5612a9a8861342d565b6040518263ffffffff1660e01b8152600401612ab891815260200190565b602060405180830381865afa158015612ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af99190615d43565b905080600003612b0b57509050610307565b612b158582611934565b8083528451612b24919061241e565b826020018181525050866001600160a01b031663bd02d0f5604051602001612b7d906020808252601f908201527f4c49515549444154494f4e5f4645455f52454345495645525f464143544f5200604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612bb191815260200190565b602060405180830381865afa158015612bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf29190615d43565b604083018190526020830151612c0791611934565b60608301525095945050505050565b612c1e614e7b565b612c26614e7b565b6001600160a01b038316612c3b579050610307565b6001600160a01b0383168152612c518684613469565b60208201819052855190612c66908690611934565b612c709190615a5b565b604082015295945050505050565b600080612c98868585612c9389604001515190565b6135af565b50905080612cab86602001516060015190565b1115612cbf5760208501516060015161290b565b6000612cd086602001516060015190565b612cda9083615c97565b9050612ceb61295b87602001515190565b979650505050505050565b6000604051602001611f22906020808252601b908201527a46554e44494e475f4645455f414d4f554e545f5045525f53495a4560281b604082015260600190565b6000604051602001611f229060208082526021908201527f434c41494d41424c455f46554e44494e475f414d4f554e545f5045525f53495a6040820152604560f81b606082015260800190565b600080612d918587615c97565b90506111848482612db566038d7ea4c6800068327cb2734119d3b7a9601e1b615a2e565b866123f7565b6000604051602001611ea490602080825260179082015276232aa72224a723afa2ac2827a722a72a2fa320a1aa27a960491b604082015260600190565b60006110f864e8d4a5100083615a5b565b600082600003612e31578115612e20576000612e2a565b670de0b6b3a76400005b90506110f8565b610118612e46612e4085613613565b846136c9565b6136d5565b60006110f864e8d4a5100083615a2e565b600083600003612e6e57506000610118565b8115612e9457612e8d8468327cb2734119d3b7a9601e1b856001612f22565b9050610118565b6101158468327cb2734119d3b7a9601e1b8561230d565b6000604051602001611ea4906020808252600e908201526d232aa72224a723afa320a1aa27a960911b604082015260600190565b6000604051602001611ea4906020808252601f908201527f53415645445f46554e44494e475f464143544f525f5045525f5345434f4e4400604082015260600190565b600080612f3086868661230d565b90506001836002811115612f4657612f46615d5c565b148015612f63575060008480612f5e57612f5e615a45565b868809115b156103f157611184600182615a1b565b600080600080600080876001600160a01b03166385725b58886040518263ffffffff1660e01b8152600401612fa89190615d2f565b602060405180830381865afa158015612fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe99190615d43565b905060008080808415613237576040516306459e2360e51b8152600481018690526001600160a01b038d169063c8b3c46090602401602060405180830381865afa15801561303b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305f9190615dd0565b935060008c6001600160a01b0316631582a018866040518263ffffffff1660e01b815260040161308f9190615d2f565b602060405180830381865afa1580156130ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d09190615d43565b60405163039af9eb60e01b8152600481018290529091506001600160a01b038e169063039af9eb906024016040805180830381865afa158015613117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313b9190615ded565b90945092506001600160a01b038e1663bd02d0f56131588361371b565b6040518263ffffffff1660e01b815260040161317691815260200190565b602060405180830381865afa158015613193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b79190615d43565b915060008d6001600160a01b03166371a6a790876040518263ffffffff1660e01b81526004016131e79190615d2f565b602060405180830381865afa158015613204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132289190615d43565b90508015613234578093505b50505b60006132586127106132498587615a2e565b6132539190615a5b565b61375c565b905060006132658561375c565b905060006132738383615c97565b979c50959a509598509650945050505050939792965093509350565b60006040516020016132c8906020808252601390820152722827a9a4aa24a7a72fa322a2afa320a1aa27a960691b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b0385169082015282151560608201526080015b60405160208183030381529060405280519060200120905092915050565b6000604051602001611ea4906020808252600f908201526e282927afaa2920a222a92faa24a2a960891b604082015260600190565b600060405160200161338a90602080825260139082015272282927afa224a9a1a7aaa72a2fa320a1aa27a960691b604082015260600190565b60408051601f198184030181528282528051602091820120908301528101839052606001611ed2565b6000836001600160a01b031663bd02d0f56133ce8585613781565b6040518263ffffffff1660e01b81526004016133ec91815260200190565b602060405180830381865afa158015613409573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101159190615d43565b6000604051602001611ea4906020808252601690820152752624a8aaa4a220aa24a7a72fa322a2afa320a1aa27a960511b604082015260600190565b600080836001600160a01b031663bd02d0f56040516020016134b09060208082526011908201527026a0ac2faaa4afa322a2afa320a1aa27a960791b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016134e491815260200190565b602060405180830381865afa158015613501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135259190615d43565b90506000846001600160a01b031663bd02d0f5613541866137c2565b6040518263ffffffff1660e01b815260040161355f91815260200190565b602060405180830381865afa15801561357c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a09190615d43565b905081811061030757816103f1565b60008060006135c3878760000151866137f5565b905060006135d388888888613821565b905060006135e6898960000151886133b3565b905060006135f48385615a2e565b905060006136028284615a1b565b9b919a509098505050505050505050565b6000670de0b6b3a764000082101561364157604051633621413760e21b8152600481018390526024016110c4565b6000613656670de0b6b3a76400008404613a41565b670de0b6b3a764000081029250905082811c670de0b6b3a763ffff19810161367f575050919050565b6706f05b59d3b200005b80156136c157670de0b6b3a7640000828002049150671bc16d674ec8000082106136b9579283019260019190911c905b60011c613689565b505050919050565b60006101188383613b24565b6000680a688906bd8b000000821061370357604051634a4f26f160e01b8152600481018390526024016110c4565b670de0b6b3a7640000604083901b0461011881613bea565b600060405160200161338a906020808252601b908201527a26a4a72fa0a32324a624a0aa22afa922aba0a9222fa320a1aa27a960291b604082015260600190565b600061271061377768327cb2734119d3b7a9601e1b84615a2e565b6110f89190615a5b565b60006040516020016132c8906020808252601b908201527a21aaa6aaa620aa24ab22afa127a92927aba4a723afa320a1aa27a960291b604082015260600190565b6000604051602001611ea4906020808252600d908201526c2aa4afa322a2afa320a1aa27a960991b604082015260600190565b60008061380385858561427c565b905080600003613817576000915050610118565b6103f18142615c97565b60008061383086868686614297565b905080600003613844576000915050610307565b6000866001600160a01b0316637ae1cfca6040516020016138a29060208082526023908201527f534b49505f424f52524f57494e475f4645455f464f525f534d414c4c45525f5360408201526249444560e81b606082015260800190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016138d691815260200190565b602060405180830381865afa1580156138f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139179190615e11565b9050801561397f57600061392d888860016142cf565b9050600061393d898960006142cf565b905085801561394b57508082105b1561395d576000945050505050610307565b8515801561396a57508181105b1561397c576000945050505050610307565b50505b600061398f888888886000614322565b9050806000036139b257604051630d5f5aef60e31b815260040160405180910390fd5b60006139c38989600001518861439b565b905080156139e4576139d98989888786866143b6565b945050505050610307565b60006139f58a8a6000015189614565565b90506000613a0386836120a2565b90506000613a118286612101565b90506000613a248d8d600001518c614580565b9050613a308282611934565b9d9c50505050505050505050505050565b6000600160801b8210613a6157608091821c91613a5e9082615a1b565b90505b600160401b8210613a7f57604091821c91613a7c9082615a1b565b90505b600160201b8210613a9d57602091821c91613a9a9082615a1b565b90505b620100008210613aba57601091821c91613ab79082615a1b565b90505b6101008210613ad657600891821c91613ad39082615a1b565b90505b60108210613af157600491821c91613aee9082615a1b565b90505b60048210613b0c57600291821c91613b099082615a1b565b90505b60028210613b1f576110f8600182615a1b565b919050565b60008080600019848609848602925082811083820303915050670de0b6b3a76400008110613b685760405163698d9a0160e11b8152600481018290526024016110c4565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff8211905082600003613ba65780670de0b6b3a76400008504019450505050506110f8565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b821615613c0a5768016a09e667f3bcc9090260401c5b6001603e1b821615613c25576801306fe0a31b7152df0260401c5b6001603d1b821615613c40576801172b83c7d517adce0260401c5b6001603c1b821615613c5b5768010b5586cf9890f62a0260401c5b6001603b1b821615613c76576801059b0d31585743ae0260401c5b6001603a1b821615613c9157680102c9a3e778060ee70260401c5b600160391b821615613cac5768010163da9fb33356d80260401c5b600160381b821615613cc757680100b1afa5abcbed610260401c5b600160371b821615613ce25768010058c86da1c09ea20260401c5b600160361b821615613cfd576801002c605e2e8cec500260401c5b600160351b821615613d1857680100162f3904051fa10260401c5b600160341b821615613d33576801000b175effdc76ba0260401c5b600160331b821615613d4e57680100058ba01fb9f96d0260401c5b600160321b821615613d695768010002c5cc37da94920260401c5b600160311b821615613d84576801000162e525ee05470260401c5b600160301b821615613d9f5768010000b17255775c040260401c5b6001602f1b821615613dba576801000058b91b5bc9ae0260401c5b6001602e1b821615613dd557680100002c5c89d5ec6d0260401c5b6001602d1b821615613df05768010000162e43f4f8310260401c5b6001602c1b821615613e0b57680100000b1721bcfc9a0260401c5b6001602b1b821615613e265768010000058b90cf1e6e0260401c5b6001602a1b821615613e41576801000002c5c863b73f0260401c5b600160291b821615613e5c57680100000162e430e5a20260401c5b600160281b821615613e77576801000000b1721835510260401c5b600160271b821615613e9257680100000058b90c0b490260401c5b600160261b821615613ead5768010000002c5c8601cc0260401c5b600160251b821615613ec8576801000000162e42fff00260401c5b600160241b821615613ee35768010000000b17217fbb0260401c5b600160231b821615613efe576801000000058b90bfce0260401c5b600160221b821615613f1957680100000002c5c85fe30260401c5b600160211b821615613f345768010000000162e42ff10260401c5b600160201b821615613f4f57680100000000b17217f80260401c5b6380000000821615613f6a5768010000000058b90bfc0260401c5b6340000000821615613f85576801000000002c5c85fe0260401c5b6320000000821615613fa057680100000000162e42ff0260401c5b6310000000821615613fbb576801000000000b17217f0260401c5b6308000000821615613fd657680100000000058b90c00260401c5b6304000000821615613ff15768010000000002c5c8600260401c5b630200000082161561400c576801000000000162e4300260401c5b63010000008216156140275768010000000000b172180260401c5b62800000821615614041576801000000000058b90c0260401c5b6240000082161561405b57680100000000002c5c860260401c5b622000008216156140755768010000000000162e430260401c5b6210000082161561408f57680100000000000b17210260401c5b620800008216156140a95768010000000000058b910260401c5b620400008216156140c3576801000000000002c5c80260401c5b620200008216156140dd57680100000000000162e40260401c5b620100008216156140f65761b172600160401b010260401c5b61800082161561410e576158b9600160401b010260401c5b61400082161561412657612c5d600160401b010260401c5b61200082161561413e5761162e600160401b010260401c5b61100082161561415657610b17600160401b010260401c5b61080082161561416e5761058c600160401b010260401c5b610400821615614186576102c6600160401b010260401c5b61020082161561419e57610163600160401b010260401c5b6101008216156141b55760b1600160401b010260401c5b60808216156141cb576059600160401b010260401c5b60408216156141e157602c600160401b010260401c5b60208216156141f7576016600160401b010260401c5b601082161561420d57600b600160401b010260401c5b6008821615614223576006600160401b010260401c5b6004821615614239576003600160401b010260401c5b600282161561424f576001600160401b010260401c5b6001821615614265576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b6000836001600160a01b031663bd02d0f56133ce858561459b565b60008082156142c85760006142ad8787866145ed565b8551602001519091506142c09082615a2e565b9150506103f1565b6111848686855b6000806142e4846040015185606001516110cd565b905060006142fd868660000151876040015187866110fe565b90506000614316878760000151886060015188876110fe565b9050612ceb8183615a1b565b6000808361433457856060015161433a565b85604001515b90506000614349888884614634565b905060008415614377578561436657866040015160200151614370565b8660200151602001515b9050614391565b856143875760408701515161438e565b6020870151515b90505b6101b68183615a2e565b6000836001600160a01b031663bd02d0f56133ce85856146d2565b6000806143c6888888888861470c565b90506000886001600160a01b031663bd02d0f56143e78a600001518a61486d565b6040518263ffffffff1660e01b815260040161440591815260200190565b602060405180830381865afa158015614422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144469190615d43565b905060006144548383611934565b9050848311801561447057508468327cb2734119d3b7a9601e1b115b156101b65760006144818685615c97565b905060008b6001600160a01b031663bd02d0f56144a28d600001518d6148a8565b6040518263ffffffff1660e01b81526004016144c091815260200190565b602060405180830381865afa1580156144dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145019190615d43565b905060008482111561451a576145178583615c97565b90505b60006145328968327cb2734119d3b7a9601e1b615c97565b90508061453f8584615a2e565b6145499190615a5b565b6145539086615a1b565b9e9d5050505050505050505050505050565b6000836001600160a01b031663bd02d0f56133ce85856148f8565b6000836001600160a01b031663bd02d0f56133ce8585614937565b60006040516020016132c89060208082526026908201527f43554d554c41544956455f424f52524f57494e475f464143544f525f5550444160408201526515115117d05560d21b606082015260800190565b600080614602846040015185606001516110cd565b9050600061461b8686600001518760400151878661496d565b905060006143168787600001518860600151888761496d565b600080614649846040015185606001516110cd565b905080856001600160a01b031663bd02d0f561466987600001518761498a565b6040518263ffffffff1660e01b815260040161468791815260200190565b602060405180830381865afa1580156146a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146c89190615d43565b6103f19190615a5b565b60006040516020016132c89060208082526014908201527327a82a24a6a0a62faaa9a0a3a2afa320a1aa27a960611b604082015260600190565b60008061471e878760000151876149f8565b9050600061472c8483611934565b9050600061473a8683612101565b9050886001600160a01b0316637ae1cfca60405160200161479a9060208082526025908201527f49474e4f52455f4f50454e5f494e5445524553545f464f525f55534147455f4660408201526420a1aa27a960d91b606082015260800190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016147ce91815260200190565b602060405180830381865afa1580156147eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061480f9190615e11565b1561481e5792506103f1915050565b600061482f8a8a600001518a614a13565b9050600061483e8b8b8b6142cf565b9050600061484c8284612101565b905080841161485b578061485d565b835b9c9b505050505050505050505050565b60006040516020016132c8906020808252601590820152742120a9a2afa127a92927aba4a723afa320a1aa27a960591b604082015260600190565b60006040516020016132c89060208082526024908201527f41424f56455f4f5054494d414c5f55534147455f424f52524f57494e475f464160408201526321aa27a960e11b606082015260800190565b60006040516020016132c8906020808252601990820152782127a92927aba4a723afa2ac2827a722a72a2fa320a1aa27a960391b604082015260600190565b60006040516020016132c89060208082526010908201526f2127a92927aba4a723afa320a1aa27a960811b604082015260600190565b600081866001600160a01b031663bd02d0f561111b888888614a2e565b60006040516020016149bb906020808252600b908201526a1413d3d317d05353d5539560aa1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b0380861691830191909152831660608201526080016132fe565b6000836001600160a01b031663bd02d0f56133ce8585614a6b565b6000836001600160a01b031663bd02d0f56133ce8585614aad565b6000604051602001611f22906020808252601790820152764f50454e5f494e5445524553545f494e5f544f4b454e5360481b604082015260600190565b60006040516020016132c8906020808252601c908201527b27a822a72fa4a72a22a922a9aa2fa922a9a2a92b22afa320a1aa27a960211b604082015260600190565b60006040516020016132c89060208082526011908201527013505617d3d4115397d2539511549154d5607a1b604082015260600190565b6040518060a001604052806000151581526020016000815260200160008152602001614b0e614ea5565b8152602001614b1b614ea5565b905290565b6040805160e081019091526000815260208101614b3b614b8c565b8152602001614b48614cf0565b8152602001614b7160405180606001604052806000815260200160008152602001600081525090565b81526020016000815260200160008152602001600081525090565b6040805160c081019091526000606082018181526080830182905260a083019190915281908152602001614c056040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526040805160208181019092526000815291015290565b604051806101000160405280614c31614ea5565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e081019091526000606082018181526080830182905260a0830182905260c0830191909152815260208101614ca0614cd6565b8152602001600081525090565b6040518060600160405280614cc0614cd6565b8152602001614ccd614cd6565b8152602001614b1b5b604051806040016040528060008152602001600081525090565b604051806102200160405280614d676040518061014001604052806000801916815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001614d9060405180606001604052806000815260200160008152602001600081525090565b8152602001614d9d614e45565b8152602001614daa614e1d565b8152602001614db7614e7b565b8152602001614dc4614e1d565b8152602001614dd1614cd6565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6040518060400160405280614ccd614cd6565b6001600160a01b0381168114614ecd57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614f0857614f08614ed0565b60405290565b604051608081016001600160401b0381118282101715614f0857614f08614ed0565b60405161012081016001600160401b0381118282101715614f0857614f08614ed0565b604051601f8201601f191681016001600160401b0381118282101715614f7b57614f7b614ed0565b604052919050565b8035613b1f81614eb8565b600060408284031215614fa057600080fd5b604080519081016001600160401b0381118282101715614fc257614fc2614ed0565b604052823581526020928301359281019290925250919050565b600060c08284031215614fee57600080fd5b614ff6614ee6565b90506150028383614f8e565b81526150118360408401614f8e565b60208201526150238360808401614f8e565b604082015292915050565b600080600083850361016081121561504557600080fd5b843561505081614eb8565b93506080601f198201121561506457600080fd5b5061506d614f0e565b602085013561507b81614eb8565b8152604085013561508b81614eb8565b6020820152606085013561509e81614eb8565b604082015260808501356150b181614eb8565b606082015291506150c58560a08601614fdc565b90509250925092565b80518252602090810151910152565b6150e88282516150ce565b60208101516150fa60408401826150ce565b505050565b6000610160820190508251151582526020830151602083015260408301516040830152606083015161513460608401826150dd565b50608083015161514760e08401826150dd565b5092915050565b8015158114614ecd57600080fd5b6000806000806000806000610180888a03121561517857600080fd5b873561518381614eb8565b9650602088013561519381614eb8565b9550604088013594506151a98960608a01614fdc565b935061012088013592506101408801356151c281614eb8565b91506101608801356151d38161514e565b8091505092959891949750929550565b6001600160a01b03169052565b805160018060a01b03808251168452806020830151166020850152806040830151166040850152505060208101518051606084015260208101516080840152604081015160a0840152606081015160c0840152608081015160e084015260a0810151610100818186015260c083015161012086015260e08301516101408601528083015161016086015250505060408101516150fa6101808401825115159052565b8051825260208101516152a860208401826151e3565b5060408101516152bb60408401826151e3565b50606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015181840152506101208082015181840152505050565b8051825260208082015190830152604090810151910152565b805182526020810151602083015260408101516040830152606081015160608301525050565b80518252602081015161535f60208401826151f0565b5060408101516101c06153758185018351615292565b602082015161538861030086018261530a565b5060408281015180516103608701526020810151610380870152908101516103a086015260608101516103c086015260808101516103e086015260a08101516104008601525060608201516153e1610420860182615323565b50608082015180516001600160a01b03166104a086015260208101516104c0860152604001516104e085015260a0820151615420610500860182615323565b5060c08201516154346105808601826150ce565b5060e08201516105c08501526101008201516105e08501526101208201516106008501526101408201516106208501526101608201516106408501526101808201516106608501526101a08201516106808501528101516106a08401526101e08101516106c084015261020001516106e083015260608101516154bb61070084018261530a565b50608081015161076083015260a081015161078083015260c001516107a090910152565b6107c081016110f88284615349565b6000806000806080858703121561550457600080fd5b843561550f81614eb8565b9350602085013561551f81614eb8565b93969395505050506040820135916060013590565b6020808252825182820181905260009190848201906040850190845b81811015615577576155638385516151f0565b928401926101a09290920191600101615550565b50909695505050505050565b60006001600160401b0382111561559c5761559c614ed0565b5060051b60200190565b600082601f8301126155b757600080fd5b813560206155cc6155c783615583565b614f53565b82815260c092830285018201928282019190878511156155eb57600080fd5b8387015b8581101561560e576156018982614fdc565b84529284019281016155ef565b5090979650505050505050565b600080600080600060a0868803121561563357600080fd5b853561563e81614eb8565b945060208681013561564f81614eb8565b945060408701356001600160401b038082111561566b57600080fd5b818901915089601f83011261567f57600080fd5b813561568d6155c782615583565b81815260059190911b8301840190848101908c8311156156ac57600080fd5b938501935b828510156156ca578435825293850193908501906156b1565b9750505060608901359250808311156156e257600080fd5b50506156f0888289016155a6565b9250506156ff60808701614f83565b90509295509295909350565b6020808252825182820181905260009190848201906040850190845b818110156155775761573a838551615349565b928401926107c09290920191600101615727565b600080600080600080600080610100898b03121561576b57600080fd5b883561577681614eb8565b975060208981013561578781614eb8565b975060408a013561579781614eb8565b965060608a01356001600160401b03808211156157b357600080fd5b818c0191508c601f8301126157c757600080fd5b81356157d56155c782615583565b81815260059190911b8301840190848101908f8311156157f457600080fd5b938501935b8285101561581b57843561580c81614eb8565b825293850193908501906157f9565b9950505060808c013592508083111561583357600080fd5b50506158418b828c016155a6565b94505061585060a08a01614f83565b925060c0890135915060e089013590509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b60006020828403121561589857600080fd5b604051602081016001600160401b03811182821017156158ba576158ba614ed0565b806040525080915082516158cd8161514e565b905292915050565b60008183036101a08112156158e957600080fd5b6158f1614ee6565b60608212156158ff57600080fd5b615907614ee6565b845161591281614eb8565b8152602085015161592281614eb8565b6020820152604085015161593581614eb8565b60408201528152610120605f19830181131561595057600080fd5b615958614f30565b9250606085015183526080850151602084015260a0850151604084015260c0850151606084015260e085015160808401526101008086015160a08501528186015160c085015261014086015160e08501526101608601518185015250508160208201526159c9856101808601615886565b6040820152949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201615a1457615a146159ec565b5060010190565b808201808211156110f8576110f86159ec565b80820281158282048414176110f8576110f86159ec565b634e487b7160e01b600052601260045260246000fd5b600082615a6a57615a6a615a45565b500490565b6001600160a01b0392831681529116602082015260400190565b600060808284031215615a9b57600080fd5b615aa3614f0e565b8251615aae81614eb8565b81526020830151615abe81614eb8565b60208201526040830151615ad181614eb8565b60408201526060830151615ae481614eb8565b60608201529392505050565b6000600160ff1b8201615b0557615b056159ec565b5060000390565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b6001600160a01b03881681526101608101615b5d6020830189615b0c565b615b6a60a08301886150ce565b8560e0830152846101008301528361012083015282151561014083015298975050505050505050565b600060608284031215615ba557600080fd5b615bad614ee6565b8251815260208301516020820152604083015160408201528091505092915050565b6001600160a01b03861681526103208101615bed6020830187615b0c565b615bfb60a0830186516150ce565b6020850151615c0d60e08401826150ce565b506040850151615c216101208401826150ce565b50615c306101608301856151f0565b826103008301529695505050505050565b600080600060608486031215615c5657600080fd5b8351925060208401519150604084015190509250925092565b8082018281126000831280158216821582161715615c8f57615c8f6159ec565b505092915050565b818103818111156110f8576110f86159ec565b60006020808385031215615cbd57600080fd5b82516001600160401b03811115615cd357600080fd5b8301601f81018513615ce457600080fd5b8051615cf26155c782615583565b81815260059190911b82018301908381019087831115615d1157600080fd5b928401925b82841015612ceb57835182529284019290840190615d16565b6001600160a01b0391909116815260200190565b600060208284031215615d5557600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b80820260008212600160ff1b84141615615d8e57615d8e6159ec565b81810583148215176110f8576110f86159ec565b600082615db157615db1615a45565b600160ff1b821460001984141615615dcb57615dcb6159ec565b500590565b600060208284031215615de257600080fd5b815161011881614eb8565b60008060408385031215615e0057600080fd5b505080516020909101519092909150565b600060208284031215615e2357600080fd5b81516101188161514e56fea2646970667358221220493fbf7e32f9ae66e38665f036ba88776bcfbd612a4fb899a0c070898e73de7f64736f6c63430008120033