0 txs
1 call
constructor
constructor(address _roleStore, address _dataStore, address _eventEmitter, address _oracle, address _multichainVault, address _orderVault, address _swapHandler, address _referralStorage, address _decreaseOrderExecutor)
functions
dataStore
viewfunction dataStore() view returns (address)
decreaseOrderExecutor
viewfunction decreaseOrderExecutor() view returns (address)
eventEmitter
viewfunction eventEmitter() view returns (address)
multichainVault
viewfunction multichainVault() view returns (address)
oracle
viewfunction oracle() view returns (address)
orderVault
viewfunction orderVault() view returns (address)
referralStorage
viewfunction referralStorage() view returns (address)
roleStore
viewfunction roleStore() view returns (address)
swapHandler
viewfunction swapHandler() view returns (address)
executeAdl
nonpayablefunction executeAdl(address account, address market, address collateralToken, bool isLong, uint256 sizeDeltaUsd, tuple oracleParams)
updateAdlState
nonpayablefunction updateAdlState(address market, bool isLong, tuple oracleParams)
events
No events.
errors
AdlNotRequired
error AdlNotRequired(int256 pnlToPoolFactor, uint256 maxPnlFactorForAdl)
DisabledFeature
error DisabledFeature(bytes32 key)
DisabledMarket
error DisabledMarket(address market)
EmptyMarket
error EmptyMarket()
InvalidAdl
error InvalidAdl(int256 nextPnlToPoolFactor, int256 pnlToPoolFactor)
InvalidNativeTokenSender
error InvalidNativeTokenSender(address msgSender)
PnlOvercorrected
error PnlOvercorrected(int256 nextPnlToPoolFactor, uint256 minPnlFactorForAdl)
Unauthorized
error Unauthorized(address msgSender, string role)
creation bytecode
0x6101a060405234801561001157600080fd5b5060405161399b38038061399b8339810160408190526100309161008c565b6001600160a01b0398891660805296881660a05293871660c05293861660e05290851661010052841661012052908316610140528216610160521661018052610150565b6001600160a01b038116811461008957600080fd5b50565b60008060008060008060008060006101208a8c0312156100ab57600080fd5b89516100b681610074565b60208b01519099506100c781610074565b60408b01519098506100d881610074565b60608b01519097506100e981610074565b60808b01519096506100fa81610074565b60a08b015190955061010b81610074565b60c08b015190945061011c81610074565b60e08b015190935061012d81610074565b6101008b015190925061013f81610074565b809150509295985092959850929598565b60805160a05160c05160e05161010051610120516101405161016051610180516136f56102a6600039600081816103860152610b5c0152600081816101b0015261126f0152600081816102ea015261124401526000818161031e01526111ec01526000818161024e01526111c1015260008181610352015281816104e4015281816108ed01526111960152600081816102b6015281816104400152818161050c015281816105940152818161064c0152818161073a015281816107e40152818161095701528181610bdc01528181610ca90152818161121701526112ff015260008181609801528181610282015281816104bc01528181610712015281816107c3015281816108be01528181610a7001528181610bbb01528181610c3e01528181610d2e01528181610e3101528181610f9b015281816110cc015261116e01526000818161021a0152610f0001526136f56000f3fe60806040526004361061008f5760003560e01c80626cc35e1461019e57806312a758f0146101e85780634a4a7b0414610208578063528a65f41461023c578063660d0d67146102705780637dc0d1d0146102a45780638a53aaac146102d857806393845e461461030c5780639ff78c3014610340578063cedef2ef14610374578063f09f032d146103a857600080fd5b366101995760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166321f8a7216040516020016100ec9060208082526003908201526215d39560ea1b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161012091815260200190565b602060405180830381865afa15801561013d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610161919061267e565b9050336001600160a01b03821614610197573360405163738d28df60e11b815260040161018e91906126a8565b60405180910390fd5b005b600080fd5b3480156101aa57600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b6040516101df91906126a8565b60405180910390f35b3480156101f457600080fd5b506101976102033660046126e2565b6103c8565b34801561021457600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561024857600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561027c57600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b3480156102b057600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e457600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561031857600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561034c57600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561038057600080fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b457600080fd5b506101976103c3366004612743565b610612565b6103d0610d2a565b6104206040516020016103e2906127d2565b604051602081830303815290604052805190602001206040518060400160405280600a81526020016920a2262fa5a2a2a822a960b11b815250610ee9565b61042981612965565b604051633d333c8560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d333c8590610475908490600401612b66565b600060405180830381600087803b15801561048f57600080fd5b505af11580156104a3573d6000803e3d6000fd5b505060405163363a231960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000811660448301528716606482015285151560848201527383af390a8f92028fa221d1fad20f06ab7121a100925063d8e88c64915060a40160006040518083038186803b15801561057a57600080fd5b505af415801561058e573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662ccf1556040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105ec57600080fd5b505af1158015610600573d6000803e3d6000fd5b505050505061060d610f99565b505050565b61061a610d2a565b61062c6040516020016103e2906127d2565b61063581612965565b604051633d333c8560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d333c8590610681908490600401612b66565b600060405180830381600087803b15801561069b57600080fd5b505af11580156106af573d6000803e3d6000fd5b505050506106f86040518060e001604052806000815260200160008019168152602001600015158152602001600081526020016000815260200160008152602001600081525090565b5a815260405163d798ffa160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301528816604482015285151560648201527383af390a8f92028fa221d1fad20f06ab7121a1009063d798ffa19060840160006040518083038186803b1580156107a657600080fd5b505af41580156107ba573d6000803e3d6000fd5b5050505061085a7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000898860405160200161083f9060208082526016908201527513505617d4139317d19050d513d497d193d497d0511360521b604082015260600190565b60405160208183030381529060405280519060200120611052565b6060840152608083015215156040820181905261089657806080015181606001516040516368376c5f60e11b815260040161018e929190612c0c565b7383af390a8f92028fa221d1fad20f06ab7121a10063dbadc9b96040518061010001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018b6001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b0316815260200188151581526020018781526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f002606b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190612c1a565b8152506040518263ffffffff1660e01b81526004016109f69190612c33565b602060405180830381865af4158015610a13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a379190612c1a565b6020820181905260405163fdfc26f360e01b81526000917329b7cf4831288932de48c929cb09649d1c6ca69d9163fdfc26f391610a99917f00000000000000000000000000000000000000000000000000000000000000009190600401612cb5565b600060405180830381865af4158015610ab6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ade9190810190612ec2565b90506000610af88360200151833386600001516001611092565b80515160408201516020015151919250610b2d91610b289030906008811115610b2357610b2361302e565b61147f565b611515565b6040516392ee7d2360e01b81527374bfc9c1e496d96bbaf87a8231aad1c79ddbf7ba906392ee7d2390610b86907f0000000000000000000000000000000000000000000000000000000000000000908590600401613322565b60006040518083038186803b158015610b9e57600080fd5b505af4158015610bb2573d6000803e3d6000fd5b50505050610c047f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008b8a6001611540565b60a08401819052608084015113610c39578260a00151836080015160405162753f0f60e61b815260040161018e929190612c0c565b610c647f00000000000000000000000000000000000000000000000000000000000000008a896116d3565b60c08401819052610c7490611757565b8360a001511215610ca4578260a001518360c00151604051634f85e3ef60e11b815260040161018e929190612c0c565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662ccf1556040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d0157600080fd5b505af1158015610d15573d6000803e3d6000fd5b5050505050610d22610f99565b505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd02d0f5604051602001610d6a906133f6565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401610d9e91815260200190565b602060405180830381865afa158015610dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddf9190612c1a565b90508015610e2f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161018e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e2a4853a604051602001610e6d906133f6565b6040516020818303038152906040528051906020012060016040518363ffffffff1660e01b8152600401610ea2929190612c0c565b6020604051808303816000875af1158015610ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee59190612c1a565b5050565b60405163ac4ab3fb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ac4ab3fb90610f379033908690600401612cb5565b602060405180830381865afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f789190613427565b610ee557338160405163a35b150b60e01b815260040161018e929190613444565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e2a4853a604051602001610fd7906133f6565b6040516020818303038152906040528051906020012060006040518363ffffffff1660e01b815260040161100c929190612c0c565b6020604051808303816000875af115801561102b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104f9190612c1a565b50565b60008060008061106289886117c5565b905060006110708983611856565b905061107f8a83838a8a6119cc565b9450945094505050955095509592505050565b61109a61246a565b6110a261246a565b602081018790526040810186905273f62e9cfa1ffd446e3516dc2f19f2818911bf7d96630988a8f77f00000000000000000000000000000000000000000000000000000000000000006110f7895160e0015190565b6040518363ffffffff1660e01b8152600401611114929190613468565b600060405180830381865af4158015611131573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261115991908101906134e9565b60608083019190915281516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690915282517f0000000000000000000000000000000000000000000000000000000000000000821660209182015283517f0000000000000000000000000000000000000000000000000000000000000000831660409182015284517f0000000000000000000000000000000000000000000000000000000000000000841694019390935283517f00000000000000000000000000000000000000000000000000000000000000008316608090910181905284517f0000000000000000000000000000000000000000000000000000000000000000841660a09091015284517f000000000000000000000000000000000000000000000000000000000000000090931660c090930192909252825163f002606b60e01b81529251919263f002606b92600480830193928290030181865afa1580156112d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f49190612c1a565b8160800181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663716042456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561135b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137f9190612c1a565b60a08201526040810151600090611398905160a0015190565b6001600160a01b03161461142f578051516040808301515160a001519051632ecad23f60e11b815273f62e9cfa1ffd446e3516dc2f19f2818911bf7d9692635d95a47e926113e89260040161357e565b608060405180830381865af4158015611405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114299190613598565b60c08201525b6001600160a01b03851660e08201526101008101849052610120810183600181111561145d5761145d61302e565b908160018111156114705761147061302e565b90525090505b95945050505050565b60006040516020016114c1906020808252601c908201527b11561150d5551157d0511317d191505515549157d11254d05093115160221b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b03851690820152606081018390526080015b6040516020818303038152906040528051906020012090505b92915050565b61151f8282611a20565b15610ee55760405163dd70e0c960e01b81526004810182905260240161018e565b60008061154d87866117c5565b905060006040518060600160405280886001600160a01b0316635dcf719485602001516040518263ffffffff1660e01b815260040161158c91906126a8565b6040805180830381865afa1580156115a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cc91906135b4565b8152602001886001600160a01b0316635dcf719485604001516040518263ffffffff1660e01b815260040161160191906126a8565b6040805180830381865afa15801561161d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164191906135b4565b8152602001886001600160a01b0316635dcf719485606001516040518263ffffffff1660e01b815260040161167691906126a8565b6040805180830381865afa158015611692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b691906135b4565b905290506116c78883838888611a8c565b98975050505050505050565b6000836001600160a01b031663bd02d0f56116ee8585611ad0565b6040518263ffffffff1660e01b815260040161170c91815260200190565b602060405180830381865afa158015611729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174d9190612c1a565b90505b9392505050565b60006001600160ff1b038211156117c15760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161018e565b5090565b6117cd612501565b60405163a8d8fff560e01b815260009073d727120ac811e9136d4a5d5c6219aee37e2757859063a8d8fff590611809908790879060040161357e565b608060405180830381865af4158015611826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184a9190613598565b90506117508482611b48565b61185e612528565b6040518060600160405280846001600160a01b0316635dcf719485602001516040518263ffffffff1660e01b815260040161189991906126a8565b6040805180830381865afa1580156118b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d991906135b4565b8152602001846001600160a01b0316635dcf719485604001516040518263ffffffff1660e01b815260040161190e91906126a8565b6040805180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e91906135b4565b8152602001846001600160a01b0316635dcf719485606001516040518263ffffffff1660e01b815260040161198391906126a8565b6040805180830381865afa15801561199f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c391906135b4565b90529392505050565b6000806000806119e0898989896001611a8c565b905060006119f48a878b600001518a611c11565b905060008083138015611a0e575081611a0c84611c8c565b115b9b929a50909850909650505050505050565b604051633d70e7e560e11b8152600481018290526000906001600160a01b03841690637ae1cfca90602401602060405180830381865afa158015611a68573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117509190613427565b600080611a9d878787878715611cde565b905080600003611ab1576000915050611476565b6000611ac4888888600001518888611d64565b90506116c78183611df5565b6000604051602001611b0e9060208082526018908201527713525397d4139317d19050d513d497d05195115497d0511360421b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b0385169082015282151560608201526080016114f6565b80516001600160a01b0316611b70576040516302fde0d760e11b815260040160405180910390fd5b6000826001600160a01b0316637ae1cfca611b8e8460000151611e3c565b6040518263ffffffff1660e01b8152600401611bac91815260200190565b602060405180830381865afa158015611bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bed9190613427565b9050801561060d5781516040516309f8c93760e01b815261018e91906004016126a8565b6000846001600160a01b031663bd02d0f5611c2d868686611ebe565b6040518263ffffffff1660e01b8152600401611c4b91815260200190565b602060405180830381865afa158015611c68573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190612c1a565b6000808212156117c15760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015260640161018e565b60008083611cf0578560600151611cf6565b85604001515b90506000611d05888884611f4d565b905060008415611d335785611d2257866040015160200151611d2c565b8660200151602001515b9050611d4d565b85611d4357604087015151611d4a565b6020870151515b90505b611d57818361361a565b9998505050505050505050565b600080611d7a611d75888887611feb565b611757565b90506000611d89888887612049565b9050811580611d96575080155b15611da657600092505050611476565b6000611db3878787612090565b90506000611dc4611d75838561361a565b9050600087611ddc57611dd78286613631565b611de6565b611de68583613631565b9b9a5050505050505050505050565b600080611e0a611e04856120c9565b846120da565b905060008413611e2b57611e1d81611757565b611e2690613658565b611e34565b611e3481611757565b949350505050565b6000604051602001611e74906020808252601290820152711254d7d3505492d15517d11254d05093115160721b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b03841690820152606001604051602081830303815290604052805190602001209050919050565b6000604051602001611ef2906020808252600e908201526d26a0ac2fa827262fa320a1aa27a960911b604082015260600190565b60408051601f1981840301815282825280516020918201209083015281018590526001600160a01b0384166060820152821515608082015260a0015b6040516020818303038152906040528051906020012090509392505050565b600080611f62846040015185606001516120e8565b905080856001600160a01b031663bd02d0f5611f82876000015187612117565b6040518263ffffffff1660e01b8152600401611fa091815260200190565b602060405180830381865afa158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe19190612c1a565b611476919061368a565b600080612000846040015185606001516120e8565b9050600061201986866000015187604001518786612185565b9050600061203287876000015188606001518887612185565b905061203e81836136ac565b979650505050505050565b60008061205e846040015185606001516120e8565b9050600061207786866000015187604001518786612215565b9050600061203287876000015188606001518887612215565b600082156120b157816120a45783516120aa565b83602001515b9050611750565b816120c057836020015161174d565b50509051919050565b6000808212156117c1575060000390565b600061175083836000612232565b6000816001600160a01b0316836001600160a01b03161461210a57600161210d565b60025b60ff169392505050565b6000604051602001612148906020808252600b908201526a1413d3d317d05353d5539560aa1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b0380861691830191909152831660608201526080016114f6565b600081866001600160a01b031663bd02d0f56121a288888861227a565b6040518263ffffffff1660e01b81526004016121c091815260200190565b602060405180830381865afa1580156121dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122019190612c1a565b61220b919061368a565b9695505050505050565b600081866001600160a01b031663bd02d0f56121a28888886122f2565b60008360000361224457506000611750565b8115612263576120aa8468327cb2734119d3b7a9601e1b85600161232f565b61174d8468327cb2734119d3b7a9601e1b85612380565b60006040516020016122ad906020808252600d908201526c13d4115397d2539511549154d5609a1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915284166060820152821515608082015260a001611f2e565b60006040516020016122ad906020808252601790820152764f50454e5f494e5445524553545f494e5f544f4b454e5360481b604082015260600190565b60008061233d868686612380565b905060018360028111156123535761235361302e565b14801561237057506000848061236b5761236b613674565b868809115b156114765761220b6001826136ac565b60008080600019858709858702925082811083820303915050806000036123ba578382816123b0576123b0613674565b0492505050611750565b8084116124015760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161018e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516102208101825260006101408201818152610160830182905261018083018290526101a083018290526101c083018290526101e083018290526102008301829052825260208201529081016124c1612555565b81526020016060815260200160008152602001600081526020016124e3612501565b8152600060208201819052604082018190526060909101905b905290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806060016040528061253b61263f565b815260200161254861263f565b81526020016124fc61263f565b60408051610180810190915260006080820181815260a0830182905260c0830182905260e0830182905261010083018290526101208301829052610140830191909152606061016083015281526020810161260b604080516101808101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152604080516080810182526000808252602082810182905292820181905260608201529101908152602001606081525090565b604051806040016040528060008152602001600081525090565b6001600160a01b038116811461104f57600080fd5b805161267981612659565b919050565b60006020828403121561269057600080fd5b815161175081612659565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b801515811461104f57600080fd5b6000606082840312156126dc57600080fd5b50919050565b6000806000606084860312156126f757600080fd5b833561270281612659565b92506020840135612712816126bc565b915060408401356001600160401b0381111561272d57600080fd5b612739868287016126ca565b9150509250925092565b60008060008060008060c0878903121561275c57600080fd5b863561276781612659565b9550602087013561277781612659565b9450604087013561278781612659565b93506060870135612797816126bc565b92506080870135915060a08701356001600160401b038111156127b957600080fd5b6127c589828a016126ca565b9150509295509295509295565b6020808252600a908201526920a2262fa5a2a2a822a960b11b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561282e5761282e6127f6565b60405290565b60405161018081016001600160401b038111828210171561282e5761282e6127f6565b604051608081016001600160401b038111828210171561282e5761282e6127f6565b60405161010081016001600160401b038111828210171561282e5761282e6127f6565b604051601f8201601f191681016001600160401b03811182821017156128c4576128c46127f6565b604052919050565b60006001600160401b038211156128e5576128e56127f6565b5060051b60200190565b600082601f83011261290057600080fd5b813561291361290e826128cc565b61289c565b8082825260208201915060208360051b86010192508583111561293557600080fd5b602085015b8381101561295b57803561294d81612659565b83526020928301920161293a565b5095945050505050565b60006060823603121561297757600080fd5b61297f61280c565b82356001600160401b0381111561299557600080fd5b6129a1368286016128ef565b82525060208301356001600160401b038111156129bd57600080fd5b6129c9368286016128ef565b60208301525060408301356001600160401b038111156129e857600080fd5b830136601f8201126129f957600080fd5b8035612a0761290e826128cc565b8082825260208201915060208360051b850101925036831115612a2957600080fd5b602084015b83811015612acb5780356001600160401b03811115612a4c57600080fd5b850136603f820112612a5d57600080fd5b60208101356001600160401b03811115612a7957612a796127f6565b612a8c601f8201601f191660200161289c565b818152366040848401011115612aa157600080fd5b81604084016020830137600060208383010152808652505050602083019250602081019050612a2e565b5060408501525091949350505050565b600081518084526020840193506020830160005b82811015612b165781516001600160a01b0316865260209586019590910190600101612aef565b5093949350505050565b6000815180845260005b81811015612b4657602081850181015186830182015201612b2a565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000825160606020840152612b826080840182612adb565b90506020840151601f19848303016040850152612b9f8282612adb565b6040860151858203601f190160608701528051808352919350602090810192508084019190600582901b85010160005b82811015612c0057601f19868303018452612beb828651612b20565b60209586019594909401939150600101612bcf565b50979650505050505050565b918252602082015260400190565b600060208284031215612c2c57600080fd5b5051919050565b81516001600160a01b03908116825260208084015182169083015260408084015190911690820152606080830151610100830191612c739084018261269b565b506080830151612c86608084018261269b565b5060a0830151612c9a60a084018215159052565b5060c083015160c083015260e083015160e083015292915050565b6001600160a01b03929092168252602082015260400190565b600082601f830112612cdf57600080fd5b8151612ced61290e826128cc565b8082825260208201915060208360051b860101925085831115612d0f57600080fd5b602085015b8381101561295b578051612d2781612659565b835260209283019201612d14565b80516009811061267957600080fd5b80516003811061267957600080fd5b60006101808284031215612d6657600080fd5b612d6e612834565b9050612d7982612d35565b8152612d8760208301612d44565b602082015260408281015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e080830151908201526101008083015190820152610120808301519082015261014080830151908201526101609182015191810191909152919050565b600060808284031215612e0e57600080fd5b612e16612857565b90508151612e23816126bc565b81526020820151612e33816126bc565b60208201526040820151612e46816126bc565b60408201526060820151612e59816126bc565b606082015292915050565b600082601f830112612e7557600080fd5b8151612e8361290e826128cc565b8082825260208201915060208360051b860101925085831115612ea557600080fd5b602085015b8381101561295b578051835260209283019201612eaa565b600060208284031215612ed457600080fd5b81516001600160401b03811115612eea57600080fd5b82016102408185031215612efd57600080fd5b612f05612857565b81516001600160401b03811115612f1b57600080fd5b82016101008187031215612f2e57600080fd5b612f36612879565b612f3f8261266e565b8152612f4d6020830161266e565b6020820152612f5e6040830161266e565b6040820152612f6f6060830161266e565b6060820152612f806080830161266e565b6080820152612f9160a0830161266e565b60a0820152612fa260c0830161266e565b60c082015260e08201516001600160401b03811115612fc057600080fd5b612fcc88828501612cce565b60e083015250825250612fe28560208401612d53565b6020820152612ff5856101a08401612dfc565b60408201526102208201516001600160401b0381111561301457600080fd5b61302086828501612e64565b606083015250949350505050565b634e487b7160e01b600052602160045260246000fd5b80516001600160a01b039081168352602080830151821690840152604080830151821690840152606080830151909116908301526080808201519061308b9084018261269b565b5060a081015161309e60a084018261269b565b5060c081015161060d60c084018261269b565b600981106130c1576130c161302e565b9052565b600381106130c1576130c161302e565b6130e08282516130b1565b60208101516130f260208401826130c5565b5060408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008101516101008301526101208101516101208301526101408101516101408301526101608101516101608301525050565b600081518084526020840193506020830160005b82811015612b16578151865260209586019590910190600101613177565b805161024080845281516001600160a01b03908116918501919091526020820151166102608401526040810151600091906131d461028086018261269b565b5060608101516131e86102a086018261269b565b5060808101516131fc6102c086018261269b565b5060a08101516132106102e086018261269b565b5060c081015161322461030086018261269b565b5060e00151610100610320850152613240610340850182612adb565b9050602083015161325460208601826130d5565b50604083810151805115156101a0870152602081015115156101c08701529081015115156101e086015260609081015115156102008601528301518482036102208601526114768282613163565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b600081518084526020840193506020830160005b82811015612b16576132fc8683516132a2565b60809590950194602091909101906001016132e9565b600281106130c1576130c161302e565b6001600160a01b0383168152604060208201819052825161334591830190613044565b60208201516101208201526000604083015161026061014084015261336e6102a0840182613195565b90506060840151603f198483030161016085015261338c82826132d5565b915050608084015161018084015260a08401516101a084015260c08401516133b86101c08501826132a2565b5060e08401516133cc61024085018261269b565b506101008401516102608401526101208401516133ed610280850182613312565b50949350505050565b6020808252601790820152765245454e5452414e43595f47554152445f53544154555360481b604082015260600190565b60006020828403121561343957600080fd5b8151611750816126bc565b6001600160a01b038316815260406020820181905260009061174d90830184612b20565b6001600160a01b038316815260406020820181905260009061174d90830184612adb565b60006080828403121561349e57600080fd5b6134a6612857565b905081516134b381612659565b815260208201516134c381612659565b602082015260408201516134d681612659565b60408201526060820151612e5981612659565b6000602082840312156134fb57600080fd5b81516001600160401b0381111561351157600080fd5b8201601f8101841361352257600080fd5b805161353061290e826128cc565b8082825260208201915060208360071b85010192508683111561355257600080fd5b6020840193505b8284101561220b5761356b878561348c565b8252602082019150608084019350613559565b6001600160a01b0392831681529116602082015260400190565b6000608082840312156135aa57600080fd5b611750838361348c565b600060408284031280156135c757600080fd5b50604080519081016001600160401b03811182821017156135ea576135ea6127f6565b604052825181526020928301519281019290925250919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761150f5761150f613604565b818103600083128015838313168383128216171561365157613651613604565b5092915050565b6000600160ff1b820161366d5761366d613604565b5060000390565b634e487b7160e01b600052601260045260246000fd5b6000826136a757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561150f5761150f61360456fea26469706673582212203265f20b2764d6195849c5cc0a45ffeaf6ba2aa2347751d489be41faf8e613e464736f6c634300081d00330000000000000000000000003c3d99fd298f679dbc2cecd132b4ec4d0f5e6e72000000000000000000000000fd70de6b91282d8017aa4e741e9ae325cab992d8000000000000000000000000c8ee91a54287db53897056e12d9819156d3822fb0000000000000000000000007f01614ca5198ec979b1aad1daf0de7e0a215bdf000000000000000000000000ceaadfaf6a8c489b250e407987877c5fdfcdbe6e00000000000000000000000031ef83a530fde1b38ee9a18093a333d8bbbc40d5000000000000000000000000db2ab9566732710d02b23325f79a8832118b97c5000000000000000000000000e6fab3f0c7199b0d34d7fbe83394fc0e0d06e99d0000000000000000000000003f4ee93723c2f14eec5a44a2cb66eda006a171fd