0 txs
61.6k calls
constructor
constructor((address gmxExchangeRouter, address feeReceiver, address dataStore, address reader, address referralStorage) _config, (address poolLogic, address withdrawalAsset)[] _whitelisteddHedgePools, (address virtualToken, uint256 virtualTokenMultiplier, uint8 oracleLookupType, (address oracleContract, uint32 maxAge) onchainOracle, address pythOracleContract, (bytes32 priceId, uint32 maxAge, uint32 minConfidenceRatio) pythOracleData)[] _virtualTokenOracleSettings, address _slippageAccumulator, address _nftTracker)
functions
dataStore
viewfunction dataStore() view returns (address)
dHedgePoolsWhitelist
viewfunction dHedgePoolsWhitelist(address poolLogic) view returns (tuple)
feeReceiver
viewfunction feeReceiver() view returns (address)
getVirtualTokenOracleSettings
viewfunction getVirtualTokenOracleSettings(address virtualToken) view returns (tuple)
gmxExchangeRouter
viewfunction gmxExchangeRouter() view returns (address)
isTxTrackingGuard
viewfunction isTxTrackingGuard() view returns (bool)
nftTracker
viewfunction nftTracker() view returns (address)
reader
viewfunction reader() view returns (address)
referralStorage
viewfunction referralStorage() view returns (address)
slippageAccumulator
viewfunction slippageAccumulator() view returns (address)
txGuard
viewfunction txGuard(address _poolManagerLogic, address _to, bytes _data) view returns (uint16 txType, bool)
virtualTokenOracleSettings
viewfunction virtualTokenOracleSettings(address) view returns (address virtualToken, uint256 virtualTokenMultiplier, uint8 oracleLookupType, tuple onchainOracle, address pythOracleContract, tuple pythOracleData)
afterDepositExecution
nonpayablefunction afterDepositExecution(bytes32, tuple depositData, tuple eventData)
afterDepositExecution
nonpayablefunction afterDepositExecution(bytes32, tuple deposit, tuple eventData)
afterOrderExecution
nonpayablefunction afterOrderExecution(bytes32, tuple orderData, tuple eventData)
afterOrderExecution
nonpayablefunction afterOrderExecution(bytes32, tuple order, tuple eventData)
afterTxGuard
nonpayablefunction afterTxGuard(address _poolManagerLogic, address _to, bytes _data)
afterWithdrawalExecution
nonpayablefunction afterWithdrawalExecution(bytes32, tuple withdrawalData, tuple eventData)
afterWithdrawalExecution
nonpayablefunction afterWithdrawalExecution(bytes32, tuple withdrawal, tuple eventData)
events
No events.
errors
No errors.
creation bytecode
0x6101606040526000805460ff191660011790553480156200001f57600080fd5b5060405162006187380380620061878339810160408190526200004291620006b9565b84516001600160601b0319606091821b811660809081526020880151831b821660a0526040880151831b821660c05282880151831b821660e052870151821b81166101005282821b8116610140529083901b166101205260005b845181101562000257576000858281518110620000b557fe5b60200260200101519050600081600001516001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ff57600080fd5b505afa15801562000114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013a919062000671565b60208301519091506001600160a01b031615801590620001db5750602082015160405163cc435bf360e01b81526001600160a01b0383169163cc435bf391620001879190600401620007e2565b60206040518083038186803b158015620001a057600080fd5b505afa158015620001b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001db919062000697565b620002035760405162461bcd60e51b8152600401620001fa90620007f6565b60405180910390fd5b5080516001600160a01b039081166000908152600160208181526040909220845181549085166001600160a01b0319918216178255929094015193810180549490931693909116929092179055016200009c565b5060005b8351811015620003ab578381815181106200027257fe5b6020026020010151600260008684815181106200028b57fe5b602090810291909101810151516001600160a01b039081168352828201939093526040918201600020845181546001600160a01b031916941693909317835583015160018084019190915590830151600280840180549293909260ff1916918490811115620002f657fe5b02179055506060820151805160038301805460209384015163ffffffff908116600160a01b0263ffffffff60a01b196001600160a01b039586166001600160a01b031994851617161790925560808601516004860180549190941691161790915560a09093015180516005840155908101516006909201805460409092015184166401000000000263ffffffff60201b199390941663ffffffff1990921691909117919091169190911790556001016200025b565b50505050505062000878565b8051620003c4816200085f565b919050565b600082601f830112620003da578081fd5b81516020620003f3620003ed8362000841565b6200081d565b8281528181019085830160408086028801850189101562000412578687fd5b865b868110156200047e5781838b0312156200042c578788fd5b81518083016001600160401b03811182821017156200044757fe5b8352835162000456816200085f565b81528387015162000467816200085f565b818801528552938501939181019160010162000414565b509198975050505050505050565b600082601f8301126200049d578081fd5b81516020620004b0620003ed8362000841565b8281528181019085830161012080860288018501891015620004d0578687fd5b865b868110156200047e5781838b031215620004ea578788fd5b6040805160c08082016001600160401b03811183821017156200050957fe5b83526200051686620003b7565b825288860151898301526200052d83870162000586565b8383015260609250620005438d848801620005fc565b8383015260a0925062000558838701620003b7565b60808301526200056b8d82880162000596565b928201929092528652509385019391810191600101620004d2565b805160038110620003c457600080fd5b600060608284031215620005a8578081fd5b604051606081016001600160401b0381118282101715620005c557fe5b60405282518152905080620005dd602084016200065c565b6020820152620005f0604084016200065c565b60408201525092915050565b6000604082840312156200060e578081fd5b604080519081016001600160401b03811182821017156200062b57fe5b8060405250809150825162000640816200085f565b815262000650602084016200065c565b60208201525092915050565b805163ffffffff81168114620003c457600080fd5b60006020828403121562000683578081fd5b815162000690816200085f565b9392505050565b600060208284031215620006a9578081fd5b8151801515811462000690578182fd5b6000806000806000858703610120811215620006d3578182fd5b60a0811215620006e1578182fd5b5060405160a081016001600160401b0380821183831017156200070057fe5b816040528851915062000713826200085f565b90825260208801519062000727826200085f565b816020840152604089015191506200073f826200085f565b8160408401526200075360608a01620003b7565b60608401526200076660808a01620003b7565b608084015260a08901519297508083111562000780578384fd5b6200078e8a848b01620003c9565b965060c0890151925080831115620007a4578384fd5b5050620007b4888289016200048c565b935050620007c560e08701620003b7565b9150620007d66101008701620003b7565b90509295509295909350565b6001600160a01b0391909116815260200190565b6020808252600d908201526c1a5b9d985b1a5908185cdcd95d609a1b604082015260600190565b6040518181016001600160401b03811182821017156200083957fe5b604052919050565b60006001600160401b038211156200085557fe5b5060209081020190565b6001600160a01b03811681146200087557600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c615856620009316000398061034152508061031d52508061026752508061059d528061066b52806106fa5280610ec05250806105bf528061068c528061071b5280610a9b5280610b625250806105e152806106ad528061073c5280610de85250806102ba5280610bbe5280610c1b5280610d5e5280610dba5280610e9c5280610f5052506158566000f3fe608060405234801561001057600080fd5b50600436106100f05760003560e01c80626cc35e146100f557806329e5be211461011357806333a518b81461012857806352dac656146101305780635464c40e146101385780636179309d14610158578063660d0d67146101795780637bf981191461018157806381b6d912146101965780638b9e55dc146101a95780638d0cec57146101bc578063a02ba64d146101dc578063a224323b146101ef578063b3f0067414610202578063b987c1671461020a578063d1018a281461022f578063d4fc42c614610237578063f66c9dd21461023f578063ffaf393f14610252575b600080fd5b6100fd610265565b60405161010a9190614de4565b60405180910390f35b610126610121366004613bf8565b610289565b005b6100fd61031b565b6100fd61033f565b61014b61014636600461391e565b610363565b60405161010a91906153de565b61016b610166366004613996565b6103ab565b60405161010a92919061572f565b6100fd610b60565b610189610b84565b60405161010a9190614f52565b6101266101a4366004613bf8565b610b8d565b6101266101b7366004613dcf565b610bea565b6101cf6101ca36600461391e565b610c47565b60405161010a91906156c1565b6101266101ea366004613c57565b610d2a565b6101266101fd366004613f24565b610d8a565b6100fd610de6565b61021d61021836600461391e565b610e0a565b60405161010a96959493929190614f08565b6100fd610e9a565b6100fd610ebe565b61012661024d366004613996565b610ee2565b610126610260366004613bf8565b610f1f565b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516336defb0960e11b815273265a349e98fbd91de0854e03d0bbf78aa20c4b5290636dbdf612906102e69085907f00000000000000000000000000000000000000000000000000000000000000009086903090600401615394565b60006040518083038186803b1580156102fe57600080fd5b505af4158015610312573d6000803e3d6000fd5b50505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61036b612156565b506001600160a01b03808216600090815260016020818152604092839020835180850190945280548516845290910154909216918101919091525b919050565b60008060008060008073fb1128577e80325513673b6cdefd6105aed4c4b663f5e086af308b8a6040518463ffffffff1660e01b81526004016103ef93929190614e7f565b60006040518083038186803b15801561040757600080fd5b505af415801561041b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104439190810190614079565b929650909450925090506001600160e01b03198416631592ca1b60e31b14156107885760008380602001905181019061047c9190613b54565b905060008151116104a85760405162461bcd60e51b815260040161049f9061500b565b60405180910390fd5b6000816001835103815181106104ba57fe5b6020026020010151905073fb1128577e80325513673b6cdefd6105aed4c4b663c3c6279f826040518263ffffffff1660e01b81526004016104fb9190614f5d565b60206040518083038186803b15801561051357600080fd5b505af4158015610527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054b919061405f565b95506001600160e01b0319861663c82aa41b60e01b14156106495760405163b27bd28d60e01b815273fb1128577e80325513673b6cdefd6105aed4c4b69063b27bd28d90610609908e9087908f9088907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600401614eab565b60006040518083038186803b15801561062157600080fd5b505af4158015610635573d6000803e3d6000fd5b5060659250610642915050565b9750610781565b6001600160e01b0319861663e78dc23560e01b14156106d8576106d18b848c857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610f7c565b6065610642565b6001600160e01b0319861663f59c48eb60e01b1415610781576107608b848c857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006111b8565b61077c5760405162461bcd60e51b815260040161049f9061500b565b606597505b5050610b50565b6001600160e01b0319841663c41b1ab360e01b141561086b576000806000858060200190518101906107ba91906139f5565b92509250925073fb1128577e80325513673b6cdefd6105aed4c4b6630e6c8f40308e85876040518563ffffffff1660e01b81526004016107fd9493929190614e36565b60006040518083038186803b15801561081557600080fd5b505af4158015610829573d6000803e3d6000fd5b50505050846001600160a01b0316816001600160a01b03161461085e5760405162461bcd60e51b815260040161049f90614f8a565b60665b9850505050610b50565b6001600160e01b0319841663e9249b5760e01b14156109495760008060008580602001905181019061089d9190613a69565b9350509250925073fb1128577e80325513673b6cdefd6105aed4c4b6630e6c8f40308e85876040518563ffffffff1660e01b81526004016108e19493929190614e36565b60006040518083038186803b1580156108f957600080fd5b505af415801561090d573d6000803e3d6000fd5b50505050846001600160a01b0316816001600160a01b0316146109425760405162461bcd60e51b815260040161049f90614f8a565b6067610861565b6001600160e01b03198416637489ec2360e01b14156109dd57604051637317128160e11b815273fb1128577e80325513673b6cdefd6105aed4c4b69063e62e25029061099d9030908d908890600401614e7f565b60006040518083038186803b1580156109b557600080fd5b505af41580156109c9573d6000803e3d6000fd5b50606892506109d6915050565b9550610b50565b6001600160e01b03198416630c50112160e21b1415610a6a57604051638651a63560e01b815273fb1128577e80325513673b6cdefd6105aed4c4b690638651a63590610a319030908d908890600401614e7f565b60006040518083038186803b158015610a4957600080fd5b505af4158015610a5d573d6000803e3d6000fd5b50606992506109d6915050565b6001600160e01b031984166303909e2d60e51b1415610b5057606a9550886001600160a01b0316639be918e6610ac87f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113ed565b6040518263ffffffff1660e01b8152600401610ae49190614de4565b60206040518083038186803b158015610afc57600080fd5b505afa158015610b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b349190613bdc565b610b505760405162461bcd60e51b815260040161049f9061536b565b5060009350505050935093915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff1681565b604051633dd28b1d60e21b815273265a349e98fbd91de0854e03d0bbf78aa20c4b529063f74a2c74906102e69085907f00000000000000000000000000000000000000000000000000000000000000009086903090600401615394565b604051634fefdce560e11b815273265a349e98fbd91de0854e03d0bbf78aa20c4b5290639fdfb9ca906102e69085907f00000000000000000000000000000000000000000000000000000000000000009086903090600401615519565b610c4f61216d565b6001600160a01b03808316600090815260026020818152604092839020835160c0810185528154909516855260018101549185019190915280820154909284019160ff90911690811115610c9f57fe5b6002811115610caa57fe5b815260408051808201825260038401546001600160a01b03808216835263ffffffff600160a01b909204821660208481019190915280860193909352600486015416838501528251606081810185526005870154825260069096015480831693820193909352600160201b90920416918101919091529101529050919050565b6040516001623d55b960e11b0319815273265a349e98fbd91de0854e03d0bbf78aa20c4b529063ff85548e906102e69085907f000000000000000000000000000000000000000000000000000000000000000090869030906004016153ec565b6040516248e66f60e91b815273265a349e98fbd91de0854e03d0bbf78aa20c4b52906391ccde00906102e69085907f00000000000000000000000000000000000000000000000000000000000000009086903090600401615605565b7f000000000000000000000000000000000000000000000000000000000000000081565b60026020818152600092835260409283902080546001820154938201548551808701875260038401546001600160a01b038082168352600160a01b90910463ffffffff9081168388015260048601548951606081018b526005880154815260069097015480831698880198909852600160201b90970416978501979097529186169560ff90911693919291169086565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b604051637d10bf1960e11b815273e555bdf3f46bbd7ef8b98f9ede75775c5df22d559063fa217e32906102e6903090879087908790600401614df8565b6040516393af440b60e01b815273265a349e98fbd91de0854e03d0bbf78aa20c4b52906393af440b906102e69085907f00000000000000000000000000000000000000000000000000000000000000009086903090600401615394565b8351600314610f9d5760405162461bcd60e51b815260040161049f9061500b565b6000610fb1836001600160a01b03166113ed565b90506000866001600160a01b0316632c2f3c076040518163ffffffff1660e01b815260040160206040518083038186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110269190613941565b6001600160a01b03166369d421486040518163ffffffff1660e01b815260040160206040518083038186803b15801561105e57600080fd5b505afa158015611072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110969190613941565b905060006110b7876002815181106110aa57fe5b60200260200101516114a2565b8060200190518101906110ca9190614239565b90506110ec8a886000815181106110dd57fe5b602002602001015185856114c3565b6111148a886001815181106110fd57fe5b6020026020010151836000015160600151856114c3565b6111986040518060c001604052808360000151600001516001600160a01b031681526020018360000151602001516001600160a01b031681526020018360000151608001518152602001836000015160a0015181526020018360600151151581526020018360000151604001516001600160a01b03168152508a6000015186611621565b6111ac8a8260000151606001518888611724565b50505050505050505050565b60006111c26121ae565b600060606111cf886118e6565b94509250905060006111e96001600160a01b0388166113ed565b905060008a6001600160a01b031663b58483056040518163ffffffff1660e01b815260040160206040518083038186803b15801561122657600080fd5b505afa15801561123a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125e9190613941565b6001600160a01b03166393845e466040518163ffffffff1660e01b815260040160206040518083038186803b15801561129657600080fd5b505afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce9190613941565b90506004856040015160088111156112e257fe5b141561133f57836002146113085760405162461bcd60e51b815260040161049f9061500b565b6113288d8b60008151811061131957fe5b602002602001015184846114c3565b6113368d8d858c8c8c6119a2565b600195506113dd565b60028560400151600881111561135157fe5b148061136c575060008560400151600881111561136a57fe5b145b156113dd57836003146113915760405162461bcd60e51b815260040161049f9061500b565b6113a28d8b60008151811061131957fe5b6113ca8d8b6001815181106113b357fe5b6020026020010151876000015160a00151846114c3565b6113d88d8d858c8c8c6119a2565b600195505b5050505050979650505050505050565b6000816001600160a01b03166321f8a7216040516020018080602001828103825260038152602001806215d39560ea1b815250602001915050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561147057600080fd5b505afa158015611484573d6000803e3d6000fd5b505050506040513d602081101561149a57600080fd5b505192915050565b60606114bd60048084510384611ce89092919063ffffffff16565b92915050565b631cdacd5960e31b6114d484611e39565b6001600160e01b031916146114fb5760405162461bcd60e51b815260040161049f90614fdc565b600080611507856114a2565b80602001905181019061151a919061395d565b604051634df48c7360e11b815291935091506001600160a01b03871690639be918e69061154b908590600401614de4565b60206040518083038186803b15801561156357600080fd5b505afa158015611577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159b9190613bdc565b6115b75760405162461bcd60e51b815260040161049f906151e8565b836001600160a01b0316826001600160a01b0316146115e85760405162461bcd60e51b815260040161049f906151e8565b826001600160a01b0316816001600160a01b0316146116195760405162461bcd60e51b815260040161049f90614f8a565b505050505050565b816001600160a01b031683600001516001600160a01b0316146116565760405162461bcd60e51b815260040161049f906150ec565b60208301516001600160a01b031630146116825760405162461bcd60e51b815260040161049f90615306565b806001600160a01b03168360a001516001600160a01b0316146116b75760405162461bcd60e51b815260040161049f90615036565b6080830151156116d95760405162461bcd60e51b815260040161049f9061517f565b604083015151156116fc5760405162461bcd60e51b815260040161049f90615154565b6060830151511561171f5760405162461bcd60e51b815260040161049f90615154565b505050565b60405163714af34b60e01b81526000906001600160a01b0384169063714af34b906117559085908890600401614f70565b60806040518083038186803b15801561176d57600080fd5b505afa158015611781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a591906142ff565b6040808201519051634df48c7360e11b81529192506001600160a01b03871691639be918e6916117d791600401614de4565b60206040518083038186803b1580156117ef57600080fd5b505afa158015611803573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118279190613bdc565b6118435760405162461bcd60e51b815260040161049f906152a7565b6060810151604051634df48c7360e11b81526001600160a01b03871691639be918e6916118739190600401614de4565b60206040518083038186803b15801561188b57600080fd5b505afa15801561189f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c39190613bdc565b6118df5760405162461bcd60e51b815260040161049f90615246565b5050505050565b606060006118f26121ae565b8351915081600314806119055750816002145b6119215760405162461bcd60e51b815260040161049f9061511d565b83600183038151811061193057fe5b60200260200101519250600061194584611e39565b90506000611952856114a2565b90506001600160e01b0319821663f59c48eb60e01b146119845760405162461bcd60e51b815260040161049f90615339565b808060200190518101906119989190614130565b9496939550505050565b60006119ad856114a2565b90506000818060200190518101906119c59190614130565b87518151519192506001600160a01b039182169116146119f75760405162461bcd60e51b815260040161049f90614f8a565b8051602001516001600160a01b031615611a235760405162461bcd60e51b815260040161049f90615276565b8051604001516001600160a01b03163014611a505760405162461bcd60e51b815260040161049f90615306565b826001600160a01b03168160000151606001516001600160a01b031614611a895760405162461bcd60e51b815260040161049f90615036565b805160a00151604051634df48c7360e11b81526001600160a01b038a1691639be918e691611aba9190600401614de4565b60206040518083038186803b158015611ad257600080fd5b505afa158015611ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0a9190613bdc565b611b265760405162461bcd60e51b815260040161049f906152d6565b600081606001516002811115611b3857fe5b14611b555760405162461bcd60e51b815260040161049f90615064565b60a081015115611b775760405162461bcd60e51b815260040161049f9061517f565b600081604001516008811115611b8957fe5b1415611c03578051608001516001600160a01b031615611bbb5760405162461bcd60e51b815260040161049f90614fb4565b611bcd88826000015160c00151611e46565b611bfe88826000015160c00151600081518110611be657fe5b6020026020010151836000015160a001518888611f17565b611cde565b805160800151604051634df48c7360e11b81526001600160a01b038a1691639be918e691611c349190600401614de4565b60206040518083038186803b158015611c4c57600080fd5b505afa158015611c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c849190613bdc565b611ca05760405162461bcd60e51b815260040161049f9061508f565b805160c001515115611cc45760405162461bcd60e51b815260040161049f906150bb565b8051608081015160a090910151611cde918a918888611f17565b5050505050505050565b60608182601f011015611d33576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611d7b576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015611dc7576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015611de65760405191506000825260208201604052611e30565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611e1f578051835260209283019201611e07565b5050858452601f01601f1916604052505b50949350505050565b60006114bd826000612127565b8051600114611e675760405162461bcd60e51b815260040161049f90615154565b816001600160a01b0316639be918e682600081518110611e8357fe5b60200260200101516040518263ffffffff1660e01b8152600401611ea79190614de4565b60206040518083038186803b158015611ebf57600080fd5b505afa158015611ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef79190613bdc565b611f135760405162461bcd60e51b815260040161049f9061508f565b5050565b60405163714af34b60e01b81526000906001600160a01b0384169063714af34b90611f489085908990600401614f70565b60806040518083038186803b158015611f6057600080fd5b505afa158015611f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9891906142ff565b6040808201519051634df48c7360e11b81529192506001600160a01b03881691639be918e691611fca91600401614de4565b60206040518083038186803b158015611fe257600080fd5b505afa158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190613bdc565b6120365760405162461bcd60e51b815260040161049f906152a7565b6060810151604051634df48c7360e11b81526001600160a01b03881691639be918e6916120669190600401614de4565b60206040518083038186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b69190613bdc565b6120d25760405162461bcd60e51b815260040161049f90615246565b80604001516001600160a01b0316846001600160a01b0316148061210b575080606001516001600160a01b0316846001600160a01b0316145b6116195760405162461bcd60e51b815260040161049f9061520f565b6000816004018351101561214d5760405162461bcd60e51b815260040161049f906151b3565b50016020015190565b604080518082019091526000808252602082015290565b6040805160c08101825260008082526020820181905290918201908152602001612195612156565b8152600060208201526040016121a9612208565b905290565b6040518061012001604052806121c2612228565b81526020016121cf612266565b81526020016000815260200160008152600060208201819052604082018190526060808301829052608083019190915260a09091015290565b604080516060810182526000808252602082018190529181019190915290565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356103a6816157e3565b80516103a6816157e3565b600082601f8301126122d1578081fd5b813560206122e66122e183615768565b615745565b8281528181019085830183850287018401881015612302578586fd5b855b85811015612329578135612317816157e3565b84529284019290840190600101612304565b5090979650505050505050565b600082601f830112612346578081fd5b815160206123566122e183615768565b8281528181019085830183850287018401881015612372578586fd5b855b85811015612329578151612387816157e3565b84529284019290840190600101612374565b600082601f8301126123a9578081fd5b815160206123b96122e183615768565b82815281810190858301838502870184018810156123d5578586fd5b855b85811015612329578151845292840192908401906001016123d7565b600082601f830112612403578081fd5b813560206124136122e183615768565b82815281810190858301855b858110156123295781358801604080601f19838d0301121561243f578889fd5b80518181016001600160401b03828210818311171561245a57fe5b90835283890135908082111561246e578b8cfd5b61247c8e8b84880101612b98565b835292840135928084111561248f578b8cfd5b505061249f8c89848601016122c1565b8189015286525050928401929084019060010161241f565b600082601f8301126124c7578081fd5b813560206124d76122e183615768565b82815281810190858301855b858110156123295781358801604080601f19838d03011215612503578889fd5b80518181016001600160401b03828210818311171561251e57fe5b908352838901359080821115612532578b8cfd5b6125408e8b84880101612b98565b835283850135915080821115612554578b8cfd5b508084019350508b603f84011261256957898afd5b878301356125796122e182615768565b808282528a820191508486018f868d86028901011115612597578d8efd5b8d96505b838710156125c557803595506125b0866157f8565b85835260019690960195918b01918b0161259b565b50838b015250508652505092840192908401906001016124e3565b600082601f8301126125f0578081fd5b813560206126006122e183615768565b82815281810190858301855b858110156123295781358801604080601f19838d0301121561262c578889fd5b80518181016001600160401b03828210818311171561264757fe5b90835283890135908082111561265b578b8cfd5b6126698e8b84880101612b98565b83528385013591508082111561267d578b8cfd5b508084019350508b603f84011261269257898afd5b878301356126a26122e182615768565b808282528a820191508486018f868d860289010111156126c0578d8efd5b8d96505b838710156126e2578035835260019690960195918b01918b016126c4565b50838b0152505086525050928401929084019060010161260c565b600082601f83011261270d578081fd5b602061271c6122e18435615768565b8335815281810190828501845b863581101561281657813587016040818a03601f19011215612749578687fd5b604051604081016001600160401b03828210818311171561276657fe5b816040528884013591508082111561277c57898afd5b61278a8c8a84870101612b98565b8352604084013591508082111561279f57898afd5b5080830192505089603f8301126127b4578788fd5b868201356127c46122e182615768565b81815288810190604085018b5b848110156127fb576127e98f604084358a0101612b98565b8452928b0192908b01906001016127d1565b5050838a015250508552509284019290840190600101612729565b50909695505050505050565b600082601f830112612832578081fd5b813560206128426122e183615768565b82815281810190858301855b858110156123295781358801604080601f19838d0301121561286e578889fd5b80518181016001600160401b03828210818311171561288957fe5b90835283890135908082111561289d578b8cfd5b6128ab8e8b84880101612b98565b8352838501359150808211156128bf578b8cfd5b508084019350508b603f8401126128d457898afd5b878301356128e46122e182615768565b808282528a820191508486018f868d86028901011115612902578d8efd5b8d96505b83871015612924578035835260019690960195918b01918b01612906565b50838b0152505086525050928401929084019060010161284e565b600082601f83011261294f578081fd5b602061295e6122e18435615768565b8335815281810190828501845b863581101561281657813587016040818a03601f1901121561298b578687fd5b604051604081016001600160401b0382821081831117156129a857fe5b81604052888401359150808211156129be57898afd5b6129cc8c8a84870101612b98565b835260408401359150808211156129e157898afd5b5080830192505089603f8301126129f6578788fd5b86820135612a066122e182615768565b81815288810190604085018b5b84811015612a3d57612a2b8f604084358a0101612b98565b8452928b0192908b0190600101612a13565b5050838a01525050855250928401929084019060010161296b565b600082601f830112612a68578081fd5b81356020612a786122e183615768565b82815281810190858301855b858110156123295781358801604080601f19838d03011215612aa4578889fd5b80518181016001600160401b038282108183111715612abf57fe5b908352838901359080821115612ad3578b8cfd5b612ae18e8b84880101612b98565b835283850135915080821115612af5578b8cfd5b508084019350508b603f840112612b0a57898afd5b87830135612b1a6122e182615768565b808282528a820191508486018f868d86028901011115612b38578d8efd5b8d96505b83871015612b5a578035835260019690960195918b01918b01612b3c565b50838b01525050865250509284019290840190600101612a84565b80516103a6816157f8565b80516001600160e01b0319811681146103a657600080fd5b600082601f830112612ba8578081fd5b8135612bb66122e182615785565b818152846020838601011115612bca578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112612bf4578081fd5b8151612c026122e182615785565b818152846020838601011115612c16578283fd5b612c278260208301602087016157a6565b949350505050565b80516103a681615806565b80356103a681615806565b80516103a681615813565b80356103a681615813565b60006040808385031215612c6d578182fd5b80518181016001600160401b038282108183111715612c8857fe5b8184528294508086351115612c9c57600080fd5b85358601915086601f830112612cb157600080fd5b8135612cbf6122e182615768565b81815260208082019190850160005b84811015612d50578135870189601f19828f03011215612ced57600080fd5b89518a81018181108982111715612d0057fe5b8b52602082013588811115612d1457600080fd5b612d238f602083860101612b98565b825250908a013590612d34826157e3565b6020818101929092528552938401939190910190600101612cce565b5050855250506020860135935080841115612d6a57600080fd5b5050612d78858386016123f3565b6020820152505092915050565b60006040808385031215612d97578182fd5b80518181016001600160401b038282108183111715612db257fe5b8184528294508086351115612dc657600080fd5b85358601915086601f830112612ddb57600080fd5b8135612de96122e182615768565b81815260208082019190850160005b84811015612e7a578135870189601f19828f03011215612e1757600080fd5b89518a81018181108982111715612e2a57fe5b8b52602082013588811115612e3e57600080fd5b612e4d8f602083860101612b98565b825250908a013590612e5e826157f8565b6020818101929092528552938401939190910190600101612df8565b5050855250506020860135935080841115612e9457600080fd5b5050612d78858386016124b7565b600060408284031215612eb3578081fd5b604051604081016001600160401b038282108183111715612ed057fe5b816040528293508085351115612ee557600080fd5b84358501915085601f830112612efa57600080fd5b81356020612f0a6122e183615768565b8281528181019085830160005b85811015612f8e57813588016040818e03601f19011215612f3757600080fd5b604051604081018181108a82111715612f4c57fe5b6040528187013589811115612f6057600080fd5b612f6e8f8983860101612b98565b825250604091909101358682015284529284019290840190600101612f17565b505086525086810135935082841115612fa657600080fd5b612fb2888589016125e0565b81860152505050505092915050565b600060408284031215612fd2578081fd5b604051604081016001600160401b038282108183111715612fef57fe5b81604052829350808535111561300457600080fd5b84358501915085601f83011261301957600080fd5b813560206130296122e183615768565b8281528181019085830160005b858110156130c857813588016040818e03601f1901121561305657600080fd5b604051604081018181108a8211171561306b57fe5b604052818701358981111561307f57600080fd5b61308d8f8983860101612b98565b8252506040820135898111156130a257600080fd5b6130b08f8983860101612b98565b82890152508552509284019290840190600101613036565b5050865250868101359350828411156130e057600080fd5b612fb2888589016126fd565b600060e082840312156130fd578081fd5b61310760e0615745565b9050613112826122b6565b8152613120602083016122b6565b6020820152613131604083016122b6565b6040820152613142606083016122b6565b6060820152613153608083016122b6565b608082015261316460a083016122b6565b60a082015260c08201516001600160401b0381111561318257600080fd5b61318e84828501612336565b60c08301525092915050565b60006101008083850312156131ad578182fd5b604051908101906001600160401b03821181831017156131c957fe5b81604052809250835181526020840151602082015260408401516040820152606084015160608201526080840151608082015260a084015160a082015260c084015160c082015260e084015160e0820152505092915050565b600060c08284031215613233578081fd5b61323d60c0615745565b9050613248826122b6565b8152613256602083016122b6565b6020820152613267604083016122b6565b6040820152613278606083016122b6565b606082015260808201516001600160401b038082111561329757600080fd5b6132a385838601612336565b608084015260a08401519150808211156132bc57600080fd5b506132c984828501612336565b60a08301525092915050565b600060e082840312156132e6578081fd5b6132f060e0615745565b905081356001600160401b038082111561330957600080fd5b61331585838601612c5b565b8352602084013591508082111561332b57600080fd5b6133378583860161380a565b6020840152604084013591508082111561335057600080fd5b61335c858386016134b8565b6040840152606084013591508082111561337557600080fd5b61338185838601612d85565b6060840152608084013591508082111561339a57600080fd5b6133a685838601612ea2565b608084015260a08401359150808211156133bf57600080fd5b6133cb85838601612fc1565b60a084015260c08401359150808211156133e457600080fd5b5061318e848285016136df565b600060208284031215613402578081fd5b604051602081018181106001600160401b038211171561341e57fe5b604052905080823561342f816157f8565b905292915050565b600060808284031215613448578081fd5b604051608081018181106001600160401b038211171561346457fe5b6040529050808235613475816157f8565b81526020830135613485816157f8565b60208201526040830135613498816157f8565b604082015260608301356134ab816157f8565b6060919091015292915050565b600060408083850312156134ca578182fd5b80518181016001600160401b0382821081831117156134e557fe5b81845282945080863511156134f957600080fd5b85358601915086601f83011261350e57600080fd5b813561351c6122e182615768565b81815260208082019190850160005b848110156135a4578135870189601f19828f0301121561354a57600080fd5b89518a8101818110898211171561355d57fe5b8b5260208201358881111561357157600080fd5b6135808f602083860101612b98565b825250908a013560208083019190915290855293840193919091019060010161352b565b50508552505060208601359350808411156135be57600080fd5b5050612d7885838601612822565b600060c082840312156135dd578081fd5b60405160c081018181106001600160401b03821117156135f957fe5b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b6000610160808385031215613651578182fd5b61365a81615745565b91505061366682612c50565b815261367460208301612c3a565b602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b6000604082840312156136f0578081fd5b604051604081016001600160401b03828210818311171561370d57fe5b81604052829350808535111561372257600080fd5b84358501915085601f83011261373757600080fd5b813560206137476122e183615768565b8281528181019085830160005b858110156137e657813588016040818e03601f1901121561377457600080fd5b604051604081018181108a8211171561378957fe5b604052818701358981111561379d57600080fd5b6137ab8f8983860101612b98565b8252506040820135898111156137c057600080fd5b6137ce8f8983860101612b98565b82890152508552509284019290840190600101613754565b5050865250868101359350828411156137fe57600080fd5b612fb28885890161293f565b6000604080838503121561381c578182fd5b80518181016001600160401b03828210818311171561383757fe5b818452829450808635111561384b57600080fd5b85358601915086601f83011261386057600080fd5b813561386e6122e182615768565b81815260208082019190850160005b848110156138f6578135870189601f19828f0301121561389c57600080fd5b89518a810181811089821117156138af57fe5b8b526020820135888111156138c357600080fd5b6138d28f602083860101612b98565b825250908a013560208083019190915290855293840193919091019060010161387d565b505085525050602086013593508084111561391057600080fd5b5050612d7885838601612a58565b60006020828403121561392f578081fd5b813561393a816157e3565b9392505050565b600060208284031215613952578081fd5b815161393a816157e3565b6000806040838503121561396f578081fd5b825161397a816157e3565b602084015190925061398b816157e3565b809150509250929050565b6000806000606084860312156139aa578081fd5b83356139b5816157e3565b925060208401356139c5816157e3565b915060408401356001600160401b038111156139df578182fd5b6139eb86828701612b98565b9150509250925092565b600080600060608486031215613a09578081fd5b83516001600160401b0380821115613a1f578283fd5b613a2b87838801612336565b94506020860151915080821115613a40578283fd5b50613a4d86828701612336565b9250506040840151613a5e816157e3565b809150509250925092565b60008060008060808587031215613a7e578182fd5b84516001600160401b0380821115613a94578384fd5b613aa088838901612336565b9550602091508187015181811115613ab6578485fd5b613ac289828a01612336565b955050604087015181811115613ad6578485fd5b87019050601f81018813613ae8578384fd5b8051613af66122e182615768565b81815283810190838501858402850186018c1015613b12578788fd5b8794505b83851015613b34578051835260019490940193918501918501613b16565b508096505050505050613b49606086016122b6565b905092959194509250565b60006020808385031215613b66578182fd5b82516001600160401b03811115613b7b578283fd5b8301601f81018513613b8b578283fd5b8051613b996122e182615768565b81815283810190838501865b84811015613bce57613bbc8a888451890101612be4565b84529286019290860190600101613ba5565b509098975050505050505050565b600060208284031215613bed578081fd5b815161393a816157f8565b600080600060608486031215613c0c578081fd5b8335925060208401356001600160401b0380821115613c29578283fd5b613c35878388016132d5565b93506040860135915080821115613c4a578283fd5b506139eb868287016132d5565b600080600060608486031215613c6b578081fd5b8335925060208401356001600160401b0380821115613c88578283fd5b8186019150610100808389031215613c9e578384fd5b60408051606081018181108582111715613cb457fe5b8252843584811115613cc4578687fd5b8501610120818c03811315613cd7578788fd5b613ce081615745565b9050613ceb826122ab565b8152613cf9602083016122ab565b6020820152613d098483016122ab565b84820152613d19606083016122ab565b6060820152613d2a608083016122ab565b6080820152613d3b60a083016122ab565b60a0820152613d4c60c083016122ab565b60c082015260e082013586811115613d62578889fd5b613d6e8d8285016122c1565b60e0830152508482013586811115613d84578889fd5b613d908d8285016122c1565b8287015250825250613da58a602087016135cc565b6020820152613db78a60e087016133f1565b81830152955087013592505080821115613c4a578283fd5b600080600060608486031215613de3578081fd5b8335925060208401356001600160401b0380821115613e00578283fd5b908501906102008288031215613e14578283fd5b60408051606081018181108482111715613e2a57fe5b8252833583811115613e3a578586fd5b8401610100818b03811315613e4d578687fd5b613e5681615745565b9050613e61826122ab565b8152613e6f602083016122ab565b6020820152613e7f8483016122ab565b84820152613e8f606083016122ab565b6060820152613ea0608083016122ab565b6080820152613eb160a083016122ab565b60a0820152613ec260c083016122ab565b60c082015260e082013585811115613ed8578788fd5b613ee48c8285016122c1565b60e083015250825250613efa896020860161363e565b6020820152613f0d896101808601613437565b818301529450860135915080821115613c4a578283fd5b600080600060608486031215613f38578081fd5b8335925060208401356001600160401b0380821115613f55578283fd5b908501906101008288031215613f69578283fd5b60408051606081018181108482111715613f7f57fe5b8252833583811115613f8f578586fd5b840160e0818b031215613fa0578586fd5b613faa60e0615745565b613fb3826122ab565b8152613fc1602083016122ab565b6020820152613fd18483016122ab565b84820152613fe1606083016122ab565b6060820152613ff2608083016122ab565b608082015260a082013585811115614008578788fd5b6140148c8285016122c1565b60a08301525060c08201358581111561402b578788fd5b6140378c8285016122c1565b60c08301525082525061404d89602086016135cc565b6020820152613f0d8960e086016133f1565b600060208284031215614070578081fd5b61393a82612b80565b60008060008084860360a081121561408f578283fd5b61409886612b80565b945060208601516001600160401b03808211156140b3578485fd5b6140bf89838a01612be4565b9550604088015191506140d1826157e3565b8194506040605f19840112156140e5578384fd5b604051925060408301915082821081831117156140fe57fe5b506040526060860151614110816157e3565b81526080860151614120816157e3565b6020820152939692955090935050565b600060208284031215614141578081fd5b81516001600160401b0380821115614157578283fd5b90830190610200828603121561416b578283fd5b61012061417781615745565b835183811115614185578586fd5b614191888287016130ec565b8252506141a1876020860161319a565b60208201526141b1828501612c45565b60408201526141c36101408501612c2f565b60608201526141d56101608501612b75565b60808201526141e76101808501612b75565b60a08201526141f96101a08501612b75565b60c08201526101c084015160e08201526101e084015191508282111561421d578485fd5b61422987838601612399565b6101008201529695505050505050565b60006020828403121561424a578081fd5b81516001600160401b0380821115614260578283fd5b9083019060e08286031215614273578283fd5b61427d60e0615745565b82518281111561428b578485fd5b61429787828601613222565b82525060208301516020820152604083015160408201526142ba60608401612b75565b60608201526080830151608082015260a083015160a082015260c0830151828111156142e4578485fd5b6142f087828601612399565b60c08301525095945050505050565b600060808284031215614310578081fd5b604051608081018181106001600160401b038211171561432c57fe5b604052825161433a816157e3565b8152602083015161434a816157e3565b6020820152604083015161435d816157e3565b60408201526060830151614370816157e3565b60608201529392505050565b6001600160a01b03169052565b6000815180845260208085019450808401835b838110156143c15781516001600160a01b03168752958201959082019060010161439c565b509495945050505050565b60008282518085526020808601955080818302840101818601855b8481101561232957601f198684030189526144038383516147dc565b988401989250908301906001016143e7565b6000815180845260208085018081965082840281019150828601855b85811015614481578284038952815160408151818752614453828801826147dc565b9150508682015191508581038787015261446d8183614389565b9a87019a9550505090840190600101614431565b5091979650505050505050565b6000815180845260208085018081965082840281019150828601855b858110156144815782840389528151604081518187526144cc828801826147dc565b92880151878403888a01528051808552908901938b9350890191505b8083101561450a578351151582529288019260019290920191908801906144e8565b509a87019a95505050908401906001016144aa565b6000815180845260208085019450848183028601828601855b8581101561232957838303895281516040815181865261455a828701826147dc565b92880151868403878a01528051808552908901938b9350890191505b808310156145965783518252928801926001929092019190880190614576565b509a87019a9450505090840190600101614538565b6000815180845260208085018081965082840281019150828601855b858110156144815782840389528151604081518187526145e9828801826147dc565b9150508682015191508581038787015261460381836143cc565b9a87019a95505050908401906001016145c7565b6000815180845260208085019450848183028601828601855b85811015612329578383038952815160408151818652614652828701826147dc565b92880151868403878a01528051808552908901938b9350890191505b8083101561468e578351825292880192600192909201919088019061466e565b509a87019a9450505090840190600101614630565b6000815180845260208085018081965082840281019150828601855b858110156144815782840389528151604081518187526146e1828801826147dc565b92880151878403888a015280518085529089019392508883019150808902830189018b5b8281101561473357601f198583030184526147218287516147dc565b958b0195938b01939150600101614705565b509c89019c975050509286019250506001016146bf565b60008282518085526020808601955080818302840101818601855b8481101561232957601f1986840301895281516040815181865261478b828701826147dc565b92870151868403878901528051808552908801938b9350880191505b808310156147c757835182529287019260019290920191908701906147a7565b509a86019a9450505090830190600101614765565b600081518084526147f48160208601602086016157a6565b601f01601f19169290920160200192915050565b614811816157d6565b9052565b6009811061481157fe5b8051604080845281518482018190526000926020919082019060608088019190848202890101865b8281101561489157898203605f190184528451805188845261486b898501826147dc565b918801516001600160a01b03169388019390935294860194938601939150600101614847565b50848801519550888103858a01526148a98187614415565b9998505050505050505050565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b8281101561492157898203605f1901845284518051888452614902898501826147dc565b91880151151593880193909352948601949386019391506001016148de565b50848801519550888103858a01526148a9818761448e565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b828110156149a257898203605f1901845284518051888452614985898501826147dc565b918801519388019390935294860194938601939150600101614961565b50848801519550888103858a01526148a9818761451f565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b82811015614a3257898203605f1901845284518051888452614a06898501826147dc565b91880151848303858a0152919050614a1e81836147dc565b9688019695880195935050506001016149e2565b50848801519550888103858a01526148a981876145ab565b6000815160e08452614a5f60e085018261481f565b905060208301518482036020860152614a788282614d63565b91505060408301518482036040860152614a928282614b38565b91505060608301518482036060860152614aac82826148b6565b91505060808301518482036080860152614ac68282614939565b91505060a083015184820360a0860152614ae082826149ba565b91505060c083015184820360c0860152614afa8282614cd3565b95945050505050565b5115159052565b8051151582526020810151151560208301526040810151151560408301526060810151151560608301525050565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b82811015614ba157898203605f1901845284518051888452614b84898501826147dc565b918801519388019390935294860194938601939150600101614b60565b50848801519550888103858a01526148a98187614617565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a08301525050565b614bfe828251614815565b6020810151614c106020840182614808565b5060408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015181840152506101208082015181840152506101408082015181840152505050565b8051825260208082015163ffffffff9081169184019190915260409182015116910152565b80516001600160a01b0316825260209081015163ffffffff16910152565b80516001600160a01b03908116835260209182015116910152565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b82811015614d4b57898203605f1901845284518051888452614d1f898501826147dc565b91880151848303858a0152919050614d3781836147dc565b968801969588019593505050600101614cfb565b50848801519550888103858a01526148a981876146a3565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b82811015614dcc57898203605f1901845284518051888452614daf898501826147dc565b918801519388019390935294860194938601939150600101614d8b565b50848801519550888103858a01526148a9818761474a565b6001600160a01b0391909116815260200190565b6001600160a01b038581168252848116602083015283166040820152608060608201819052600090614e2c908301846147dc565b9695505050505050565b6001600160a01b03858116825284166020820152608060408201819052600090614e6290830185614389565b8281036060840152614e748185614389565b979650505050505050565b6001600160a01b03848116825283166020820152606060408201819052600090614afa908301846147dc565b6001600160a01b03888116825260009061010090614ecc602085018b614cb8565b8089166060850152816080850152614ee6828501896143cc565b96811660a085015294851660c08401525050911660e090910152949350505050565b6001600160a01b03878116825260208201879052610120820190614f2b876157d6565b866040840152614f3e6060840187614c9a565b841660a0830152614e7460c0830184614c75565b901515815260200190565b60006020825261393a60208301846147dc565b6001600160a01b0392831681529116602082015260400190565b60208082526010908201526f34b73b30b634b2103932b1b2b4bb32b960811b604082015260600190565b6020808252600e908201526d1a5b9d985b1a59081b585c9ad95d60921b604082015260600190565b6020808252601590820152740d2dcecc2d8d2c840e6cadcc8a8ded6cadce640e8f605b1b604082015260600190565b6020808252601190820152701a5b9d985b1a59081b5d5b1d1a58d85b1b607a1b604082015260600190565b60208082526014908201527334b73b30b634b2103332b2903932b1b2b4bb32b960611b604082015260600190565b602080825260119082015270696e76616c69642073776170207479706560781b604082015260600190565b6020808252601290820152711d5b9cdd5c1c1bdc9d1959081b585c9ad95d60721b604082015260600190565b6020808252601790820152761cddd85c081c185d1a081b9bdd081cdd5c1c1bdc9d1959604a1b604082015260600190565b6020808252601790820152767265636569766572206e6f7420706f6f6c206c6f67696360481b604082015260600190565b6020808252601f908201527f696e76616c6964206d756c746963616c6c20706172616d73206c656e67746800604082015260600190565b6020808252601190820152700d2dcecc2d8d2c840e6eec2e040e0c2e8d607b1b604082015260600190565b6020808252601a908201527931b0b73737ba103ab73bb930b8103730ba34bb32903a37b5b2b760311b604082015260600190565b6020808252601b908201527a52656164696e67206279746573206f7574206f6620626f756e647360281b604082015260600190565b6020808252600d908201526c34b73b30b634b2103a37b5b2b760991b604082015260600190565b6020808252601e908201527f696e76616c696420696e697469616c436f6c6c61746572616c546f6b656e0000604082015260600190565b6020808252601690820152753ab739bab83837b93a32b21039b437b93a2a37b5b2b760511b604082015260600190565b60208082526017908201527634b73b30b634b21031b0b731b2b6103932b1b2b4bb32b960491b604082015260600190565b6020808252601590820152743ab739bab83837b93a32b2103637b733aa37b5b2b760591b604082015260600190565b6020808252601690820152751d5b9cdd5c1c1bdc9d19590818dbdb1b185d195c985b60521b604082015260600190565b6020808252601990820152781a5b9d985b1a590818d85b1b189858dac818dbdb9d1c9858dd603a1b604082015260600190565b602080825260189082015277696e76616c6964206d756c746963616c6c20706172616d7360401b604082015260600190565b6020808252600f908201526e1d5b9cdd5c1c1bdc9d1959081ddb9d608a1b604082015260600190565b6000608082526153a76080830187614a4a565b6001600160a01b03868116602085015283820360408501526153c98287614a4a565b92508085166060850152505095945050505050565b604081016114bd8284614cb8565b600060808252855161010080608085015261540c6101808501835161437c565b602082015161541f6101a086018261437c565b5060408201516154336101c086018261437c565b5060608201516154476101e086018261437c565b50608082015161545b61020086018261437c565b5060a082015161546f61022086018261437c565b5060c082015161548361024086018261437c565b5060e08201516101206102608601526154a06102a0860182614389565b9282015185840361017f19016102808701529290506154bf8184614389565b9250505060208701516154d560a0850182614bb9565b5060408701516154e9610160850182614b03565b506154f7602084018761437c565b82810360408401526155098186614a4a565b915050614afa606083018461437c565b600060808252855161020080608085015260018060a01b03825116610280850152602082015161554d6102a086018261437c565b5060408201516155616102c086018261437c565b5060608201516155756102e086018261437c565b50608082015161558961030086018261437c565b5060a082015161559d61032086018261437c565b5060c08201516155b161034086018261437c565b5060e082015191506101006103608501526155d0610380850183614389565b915060208801516155e460a0860182614bf3565b5060408801516155f682860182614b0a565b50506154f7602084018761437c565b6000608082528551610100608084015260018060a01b0380825116610180850152806020830151166101a08501525060408101516156476101c085018261437c565b50606081015161565b6101e085018261437c565b50608081015161566f61020085018261437c565b5060a081015160e061022085015261568b610260850182614389565b905060c0820151915061017f19848203016102408501526156ac8183614389565b91505060208701516154d560a0850182614bb9565b81516001600160a01b039081168252602080840151908301526040830151610120830191906156ef816157d6565b8060408501525060608401516157086060850182614c9a565b508060808501511660a08401525060a083015161572860c0840182614c75565b5092915050565b61ffff9290921682521515602082015260400190565b6040518181016001600160401b038111828210171561576057fe5b604052919050565b60006001600160401b0382111561577b57fe5b5060209081020190565b60006001600160401b0382111561579857fe5b50601f01601f191660200190565b60005b838110156157c15781810151838201526020016157a9565b838111156157d0576000848401525b50505050565b600381106157e057fe5b50565b6001600160a01b03811681146157e057600080fd5b80151581146157e057600080fd5b600381106157e057600080fd5b600981106157e057600080fdfea2646970667358221220ecb25fff25213b72e617c284ed20845287f8350a13a13653c2462a75531f23f564736f6c6343000706003300000000000000000000000087d66368cd08a7ca42252f5ab44b2fb6d1fb8d1500000000000000000000000026f7cbd49a4dc3321780ae8e7e0cb460f55a7511000000000000000000000000fd70de6b91282d8017aa4e741e9ae325cab992d800000000000000000000000065a6cc451baff7e7b4fdab4157763ab4b6b44d0e000000000000000000000000e6fab3f0c7199b0d34d7fbe83394fc0e0d06e99d000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000008400000000000000000000000004d4085cd8597ac6eadc1af41547e0de4c00e30be000000000000000000000000d40ef0ebe8c024cc31c2325b01649a7c024f45a4000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000319fd1d1d74607b7a224eb4e31a4aa75837d7d010000000000000000000000002f2a2543b76a4166549f7aab2e75bef0aefc5b0f000000000000000000000000e24f85a5a5c8a9417537d82dfaa3e14efa8fb322000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000007862f74aa0a1db091be314709248ec24f5f7a967000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000bf30ffe47111ae5d0a5a9f9a187ead0170ba4d8f000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000002b1d9fbbeadad547a8053119e0b8cb290c487e9d000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000008a948d8d843593bf8c50eeda5f1140846b40a95e000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000a457b8a4c1a8478f0d38af3adc1dd803131bef03000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e583100000000000000000000000043da9b0ab53242c55a9ff9c722ffc2a373d639c700000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab10000000000000000000000009a916e55f5b67226734cd7b465d51bce1d11a89a000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000cfec7a15726d4b5d183783c9033b921ba3a5090a000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000e9a71f5230a41aa09f4099a41d24450e85462fe1000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000da6d2144faec116b53715f76ca4a79925a3bb1fb000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000bf4ab4224b2ac26667cd4b8a0e5134d55cb0b29300000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1000000000000000000000000d49d22f2a2f05b2088fd42503409e430a8a7d8270000000000000000000000002f2a2543b76a4166549f7aab2e75bef0aefc5b0f0000000000000000000000001a9b3a496fe222ba84c53e215a904c555c3157c9000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000a6686c9c6bc90f84e3fb77c3d5417fd66bc05697000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000c8f346c8045fa911eac2ffef628e0c5fcdb445bd000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000007d37089ed7434c50f659d40b1e1fe09be026fc77000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e583100000000000000000000000006abba36d0991a83e75f54dbb2a8dc91f30f8c78000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000001369e0f1520671cd0748984c40955f6a6af40487000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000bfc82f7823c0261903057b04b1c7c0e4e49eb550000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000d0f9912f604c0a5fd9bd03889243f5c426b38c81000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000b6e92517c99087cb58d8e8a8e649c598137f3fc3000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000000f5a811cb153bdcfd74ad69e82567396385fec3a000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000ecb200a89dfcc09663493a0f67089c7febf08d14000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000004ec9c0f08bdce085e9d4053b393a290d7afc8083000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000e2afa0ca430432ffd22564bdea87fa4cfb879c4e000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000f8ede83467778ed0c1ab54cb21f17dd9d33e6c86000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000000000000000000000000000000000000000000600000000000000000000000047904963fc8b2340414262125af798b9655e58cd00000000000000000000000000047bf19673df52e37f2410011d10000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006ce185860a4963106506c203335a2910413708e90000000000000000000000000000000000000000000000000000000000015f90000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925ce62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b4300000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000032000000000000000000000000197aa2de1313c7ad50184234490e12409b2a1f95000000000000000000000000000072cb5bd86321e38cb6ce6682e8000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000004a85b128ebdafc24d5cb611e161376ffdeceb2890000000000000000000000000000000000000000000000000000000000015f90000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925c23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc6574400000000000000000000000000000000000000000000000000000000000005dc0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000c4da4c24fd591125c3f47b340b6f4f76111883d800000000000000000000000000047bf19673df52e37f2410011d10000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000009a7fb1b3950837a8d9b40517626e11d4127c098c0000000000000000000000000000000000000000000000000000000000015f90000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925cdcef50dd0a4cd2dcc17e45df1676dcb336a11a61c69df7a0299b0150c672d25c00000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000032000000000000000000000000c14e065b0067de91534e032868f5ac6ecf2c686800000000000000000000000001c06a5ec5433c60ddaa16406f5a4000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b4ad57b52ab9141de9926a3e0c8dc6264c2ef2050000000000000000000000000000000000000000000000000000000000015f90000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925cec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c800000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000032000000000000000000000000fdfa0a749da3bccee20ae0b4ad50e39b26f58f7c00000000000000000000000000047bf19673df52e37f2410011d1000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f9ce4fe2f0ece0362cb416844ae179a49591d5670000000000000000000000000000000000000000000000000000000000015f90000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925c4279e31cc369bbcc2faf022b382b080e32a8e689ff20fbc530d2a603eb6cd98b00000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000032000000000000000000000000e5f01aeacc8288e9838a60016ab00d7b6675900b000000000000000000000000000000000001ed09bead87c0378d8e64000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000aebda2c976cfd1ee1977eac079b4382acb8493250000000000000000000000000000000000000000000000000000000000015f90000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925ca19d04ac696c7a6616d291c7e5d1377cc8be437c327b75adb5dc1bad745fcae800000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000032