112 txs
235 calls
constructor
constructor(address _initialOwner, address _initialPauser, address _native)
functions
calculateDebtReceiveApproval
viewfunction calculateDebtReceiveApproval(address _flashFrom, uint256 _flashAmount) view returns (uint256 debtReceiveApproval)
calculateLeverageFee
viewfunction calculateLeverageFee(uint256 _amount) view returns (uint256 leverageFeeAmount)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
FEE_PRECISION
viewfunction FEE_PRECISION() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getRoleMembers
viewfunction getRoleMembers(bytes32 role) view returns (address[])
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
LEVERAGE_IMPLEMENTATION
viewfunction LEVERAGE_IMPLEMENTATION() view returns (address)
leverageFee
viewfunction leverageFee() view returns (uint256)
MAX_LEVERAGE_FEE
viewfunction MAX_LEVERAGE_FEE() view returns (uint256)
OWNER_ROLE
viewfunction OWNER_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
PAUSER_ADMIN_ROLE
viewfunction PAUSER_ADMIN_ROLE() view returns (bytes32)
PAUSER_ROLE
viewfunction PAUSER_ROLE() view returns (bytes32)
predictUserLeverageContract
viewfunction predictUserLeverageContract(address _user) view returns (address leverageContract)
revenueReceiver
viewfunction revenueReceiver() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
userLeverageContract
viewfunction userLeverageContract(address user) view returns (address leverageContract)
closeLeveragePosition
nonpayablefunction closeLeveragePosition(bytes _swapArgs, tuple _closeLeverageArgs)
closeLeveragePositionPermit
nonpayablefunction closeLeveragePositionPermit(bytes _swapArgs, tuple _closeLeverageArgs, tuple _withdrawAllowance)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
openLeveragePosition
payablefunction openLeveragePosition(tuple _flashArgs, bytes _swapArgs, tuple _depositArgs) payable
openLeveragePositionPermit
nonpayablefunction openLeveragePositionPermit(tuple _flashArgs, bytes _swapArgs, tuple _depositArgs, tuple _depositAllowance)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setLeverageFee
nonpayablefunction setLeverageFee(uint256 _fee)
setRevenueReceiver
nonpayablefunction setRevenueReceiver(address _receiver)
unpause
nonpayablefunction unpause()
events
LeverageContractCreated
event LeverageContractCreated(address indexed user, address indexed leverageContract)
LeverageFeeChanged
event LeverageFeeChanged(uint256 leverageFee)
Paused
event Paused(address account)
RevenueReceiverChanged
event RevenueReceiverChanged(address indexed receiver)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FailedDeployment
error FailedDeployment()
FeeDidNotChanged
error FeeDidNotChanged()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InvalidFee
error InvalidFee()
ReceiverDidNotChanged
error ReceiverDidNotChanged()
ReceiverZero
error ReceiverZero()
creation bytecode
0x60a060405234801561000f575f5ffd5b506040516150cb3803806150cb83398101604081905261002e9161028e565b6002805460ff1916905561005c5f5160206150ab5f395f51905f525f51602061508b5f395f51905f526100eb565b6100665f84610135565b5061007e5f5160206150ab5f395f51905f5283610135565b506100965f51602061508b5f395f51905f5284610135565b5030816040516100a590610266565b6001600160a01b03928316815291166020820152604001604051809103905ff0801580156100d5573d5f5f3e3d5ffd5b506001600160a01b0316608052506102ce915050565b5f82815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b5f80610141848461016b565b90508015610162575f8481526001602052604090206101609084610212565b505b90505b92915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1661020b575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101c33390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610165565b505f610165565b5f610162836001600160a01b0384165f81815260018301602052604081205461020b57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610165565b61330b80611d8083390190565b80516001600160a01b0381168114610289575f5ffd5b919050565b5f5f5f606084860312156102a0575f5ffd5b6102a984610273565b92506102b760208501610273565b91506102c560408501610273565b90509250925092565b608051611a8c6102f45f395f81816104c101528181610a2d0152610df90152611a8c5ff3fe6080604052600436106101d0575f3560e01c8063936a13fe116100fd578063d547741f11610092578063ee8b380911610062578063ee8b380914610550578063f00fe0161461056f578063f088aa73146105a3578063fab7c409146105b8575f5ffd5b8063d547741f146104e3578063e58378bb146103f5578063e63a391f14610502578063e63ab1e91461051d575f5ffd5b8063ae52e04a116100cd578063ae52e04a14610453578063c1a793e014610472578063ca15c87314610491578063d490c8ca146104b0575f5ffd5b8063936a13fe146103d6578063a217fddf146103f5578063a3246ad314610408578063a687d49d14610434575f5ffd5b80634ffadff411610173578063852293ea11610143578063852293ea146103475780638cc267d2146103665780639010d07c1461038057806391d14854146103b7575f5ffd5b80634ffadff4146102ea5780635c975abb146103095780635d0c6930146103205780638456cb5914610333575f5ffd5b80632f2ff15d116101ae5780632f2ff15d1461027757806336568abe146102985780633f4ba83a146102b75780634f6dc09e146102cb575f5ffd5b806301ffc9a7146101d4578063248a9ca31461020857806325a0047314610244575b5f5ffd5b3480156101df575f5ffd5b506101f36101ee3660046113ea565b6105d7565b60405190151581526020015b60405180910390f35b348015610213575f5ffd5b50610236610222366004611411565b5f9081526020819052604090206001015490565b6040519081526020016101ff565b34801561024f575f5ffd5b506102367fe0e65c783ac33ff1c5ccf4399c9185066773921d6f8d050bf80781603021f09781565b348015610282575f5ffd5b5061029661029136600461143c565b610601565b005b3480156102a3575f5ffd5b506102966102b236600461143c565b61062b565b3480156102c2575f5ffd5b50610296610663565b3480156102d6575f5ffd5b506102966102e536600461146a565b610698565b3480156102f5575f5ffd5b506102966103043660046114ea565b610741565b348015610314575f5ffd5b5060025460ff166101f3565b61029661032e36600461155e565b6107bd565b34801561033e575f5ffd5b5061029661083a565b348015610352575f5ffd5b506102366103613660046115b6565b61086c565b348015610371575f5ffd5b5061023666b1a2bc2ec5000081565b34801561038b575f5ffd5b5061039f61039a3660046115e0565b6109c6565b6040516001600160a01b0390911681526020016101ff565b3480156103c2575f5ffd5b506101f36103d136600461143c565b6109e4565b3480156103e1575f5ffd5b5061039f6103f036600461146a565b610a0c565b348015610400575f5ffd5b506102365f81565b348015610413575f5ffd5b50610427610422366004611411565b610a9c565b6040516101ff9190611600565b34801561043f575f5ffd5b5061029661044e36600461164b565b610ab5565b34801561045e575f5ffd5b5060045461039f906001600160a01b031681565b34801561047d575f5ffd5b5061023661048c366004611411565b610b2e565b34801561049c575f5ffd5b506102366104ab366004611411565b610b6b565b3480156104bb575f5ffd5b5061039f7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ee575f5ffd5b506102966104fd36600461143c565b610b81565b34801561050d575f5ffd5b50610236670de0b6b3a764000081565b348015610528575f5ffd5b506102367f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561055b575f5ffd5b5061029661056a36600461169c565b610ba5565b34801561057a575f5ffd5b5061039f61058936600461146a565b60056020525f90815260409020546001600160a01b031681565b3480156105ae575f5ffd5b5061023660035481565b3480156105c3575f5ffd5b506102966105d2366004611411565b610c06565b5f6001600160e01b03198216635a05180f60e01b14806105fb57506105fb82610cbf565b92915050565b5f8281526020819052604090206001015461061b81610cf3565b6106258383610cfd565b50505050565b6001600160a01b03811633146106545760405163334bd91960e11b815260040160405180910390fd5b61065e8282610d30565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61068d81610cf3565b610695610d5b565b50565b5f6106a281610cf3565b6004546001600160a01b038084169116036106d05760405163045be8db60e31b815260040160405180910390fd5b6001600160a01b0382166106f75760405163220a42fb60e11b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0384169081179091556040517f52b259f049e62561a54b2a991347b9fc60fe163d8ca148d83ecc5e89cf2e9a56905f90a25050565b610749610dad565b5f610752610dd3565b604051636115a29f60e01b81529091506001600160a01b03821690636115a29f9061078990339089908990899089906004016117fc565b5f604051808303815f87803b1580156107a0575f5ffd5b505af11580156107b2573d5f5f3e3d5ffd5b505050505050505050565b6107c5610dad565b5f6107ce610dd3565b9050806001600160a01b03166365fd7c8f3433888888886040518763ffffffff1660e01b8152600401610805959493929190611894565b5f604051808303818588803b15801561081c575f5ffd5b505af115801561082e573d5f5f3e3d5ffd5b50505050505050505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61086481610cf3565b610695610e88565b5f5f836001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ce91906118d2565b604051633676633960e21b81526001600160a01b038083166004830152602482018690529192505f9186169063d9d98ce490604401602060405180830381865afa15801561091e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094291906118ed565b61094c9085611918565b604051635d4086af60e01b81529091506001600160a01b03861690635d4086af9061097e90849060029060040161192b565b602060405180830381865afa158015610999573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bd91906118ed565b95945050505050565b5f8281526001602052604081206109dd9083610ec5565b9392505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff60248201527f00000000000000000000000000000000000000000000000000000000000000006014820152733d602d80600a3d3981f3363d3d373d3d3d363d7381526bffffffffffffffffffffffff19606083901b1660588201526037600c820120607882015260556043909101205f906105fb565b5f8181526001602052604090206060906105fb90610ed0565b610abd610dad565b5f610ac6610dd3565b60405163a9a7855f60e01b81529091506001600160a01b0382169063a9a7855f90610afb90339088908890889060040161194f565b5f604051808303815f87803b158015610b12575f5ffd5b505af1158015610b24573d5f5f3e3d5ffd5b5050505050505050565b6003545f90808203610b4257505f92915050565b610b578382670de0b6b3a76400006001610edc565b9150815f03610b6557600191505b50919050565b5f8181526001602052604081206105fb90610f1e565b5f82815260208190526040902060010154610b9b81610cf3565b6106258383610d30565b610bad610dad565b5f610bb6610dd3565b604051637046240760e11b81529091506001600160a01b0382169063e08c480e90610bef9033908a908a908a908a908a90600401611982565b5f604051808303815f87803b15801561081c575f5ffd5b5f610c1081610cf3565b6004546001600160a01b0316610c395760405163220a42fb60e11b815260040160405180910390fd5b8160035403610c5b576040516341cadab560e01b815260040160405180910390fd5b66b1a2bc2ec50000821115610c83576040516358d620b360e01b815260040160405180910390fd5b60038290556040518281527fa2a1c3487ac8d2713d66becf0a4401fbb3181d84471f17bf16626589bb87ee569060200160405180910390a15050565b5f6001600160e01b03198216637965db0b60e01b14806105fb57506301ffc9a760e01b6001600160e01b03198316146105fb565b6106958133610f27565b5f5f610d098484610f69565b905080156109dd575f848152600160205260409020610d289084610ff8565b509392505050565b5f5f610d3c848461100c565b905080156109dd575f848152600160205260409020610d289084611075565b610d63611089565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60025460ff1615610dd15760405163d93c066560e01b815260040160405180910390fd5b565b335f908152600560205260409020546001600160a01b03168015610df45790565b610e307f00000000000000000000000000000000000000000000000000000000000000003360601b6bffffffffffffffffffffffff19166110ac565b335f8181526005602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051939450927fac32498cf97ec4b941d0442df1edb1bdb5ae774a3afae0d714fbe32e44753ed99190a390565b610e90610dad565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d903390565b5f6109dd83836110b8565b60605f6109dd836110de565b5f610f09610ee983611137565b8015610f0457505f8480610eff57610eff6119da565b868809115b151590565b610f14868686611163565b6109bd9190611918565b5f6105fb825490565b610f3182826109e4565b610f655760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044015b60405180910390fd5b5050565b5f610f7483836109e4565b610ff1575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610fa93390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105fb565b505f6105fb565b5f6109dd836001600160a01b038416611220565b5f61101783836109e4565b15610ff1575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105fb565b5f6109dd836001600160a01b038416611265565b60025460ff16610dd157604051638dfc202b60e01b815260040160405180910390fd5b5f6109dd83835f611348565b5f825f0182815481106110cd576110cd6119ee565b905f5260205f200154905092915050565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561112b57602002820191905f5260205f20905b815481526020019060010190808311611117575b50505050509050919050565b5f600282600381111561114c5761114c61174c565b6111569190611a02565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f036111975783828161118d5761118d6119da565b04925050506109dd565b8084116111b5576111b584156111ae5760116113d9565b60126113d9565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f818152600183016020526040812054610ff157508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105fb565b5f818152600183016020526040812054801561133f575f611287600183611a2f565b85549091505f9061129a90600190611a2f565b90508082146112f9575f865f0182815481106112b8576112b86119ee565b905f5260205f200154905080875f0184815481106112d8576112d86119ee565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061130a5761130a611a42565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105fb565b5f9150506105fb565b5f814710156113735760405163cf47918160e01b815247600482015260248101839052604401610f5c565b6e5af43d82803e903d91602b57fd5bf360205283601152763d602d80600a3d3981f3363d3d373d3d3d363d730000008460881c175f52826037600984f590506001600160a01b0381166109dd5760405163b06ebf3d60e01b815260040160405180910390fd5b634e487b715f52806020526024601cfd5b5f602082840312156113fa575f5ffd5b81356001600160e01b0319811681146109dd575f5ffd5b5f60208284031215611421575f5ffd5b5035919050565b6001600160a01b0381168114610695575f5ffd5b5f5f6040838503121561144d575f5ffd5b82359150602083013561145f81611428565b809150509250929050565b5f6020828403121561147a575f5ffd5b81356109dd81611428565b5f5f83601f840112611495575f5ffd5b50813567ffffffffffffffff8111156114ac575f5ffd5b6020830191508360208285010111156114c3575f5ffd5b9250929050565b5f60608284031215610b65575f5ffd5b5f60a08284031215610b65575f5ffd5b5f5f5f5f61012085870312156114fe575f5ffd5b843567ffffffffffffffff811115611514575f5ffd5b61152087828801611485565b9095509350611534905086602087016114ca565b915061154386608087016114da565b905092959194509250565b5f60408284031215610b65575f5ffd5b5f5f5f5f60c08587031215611571575f5ffd5b61157b868661154e565b9350604085013567ffffffffffffffff811115611596575f5ffd5b6115a287828801611485565b9094509250611543905086606087016114ca565b5f5f604083850312156115c7575f5ffd5b82356115d281611428565b946020939093013593505050565b5f5f604083850312156115f1575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b818110156116405783516001600160a01b0316835260209384019390920191600101611619565b509095945050505050565b5f5f5f6080848603121561165d575f5ffd5b833567ffffffffffffffff811115611673575f5ffd5b61167f86828701611485565b9094509250611693905085602086016114ca565b90509250925092565b5f5f5f5f5f61016086880312156116b1575f5ffd5b6116bb878761154e565b9450604086013567ffffffffffffffff8111156116d6575f5ffd5b6116e288828901611485565b90955093506116f6905087606088016114ca565b91506117058760c088016114da565b90509295509295909350565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b803560028110611747575f5ffd5b919050565b634e487b7160e01b5f52602160045260245ffd5b600281106117705761177061174c565b9052565b803561177f81611428565b6001600160a01b03168252602081013561179881611428565b6001600160a01b031660208301526117b260408201611739565b61065e6040840182611760565b8035825260208082013590830152604081013560ff81168082146117e1575f5ffd5b60408401525060608181013590830152608090810135910152565b6001600160a01b0386168152610140602082018190525f906118219083018688611711565b90506118306040830185611774565b61183d60a08301846117bf565b9695505050505050565b803561185281611428565b6001600160a01b03168252602090810135910152565b803561187381611428565b6001600160a01b03168252602081810135908301526117b260408201611739565b6001600160a01b03861681526118ad6020820186611847565b60e060608201525f6118c360e083018587611711565b905061183d6080830184611868565b5f602082840312156118e2575f5ffd5b81516109dd81611428565b5f602082840312156118fd575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105fb576105fb611904565b82815260408101600383106119425761194261174c565b8260208301529392505050565b6001600160a01b038516815260a0602082018190525f906119739083018587611711565b90506109bd6040830184611774565b6001600160a01b038716815261199b6020820187611847565b61018060608201525f6119b361018083018688611711565b90506119c26080830185611868565b6119cf60e08301846117bf565b979650505050505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60ff831680611a2057634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b818103818111156105fb576105fb611904565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212207828cd3b2089c11cdf7ca05984b4c8ebc6fb9b82565c41d8136d776c5c05308864736f6c634300081c003360e060405234801561000f575f5ffd5b5060405161330b38038061330b83398101604081905261002e916100cb565b6001600160a01b038083166080528190811661005d57604051633ce3edfd60e01b815260040160405180910390fd5b6001600160a01b031660a052604051610075906100a3565b604051809103905ff08015801561008e573d5f5f3e3d5ffd5b506001600160a01b031660c052506100fc9050565b6107a180612b6a83390190565b80516001600160a01b03811681146100c6575f5ffd5b919050565b5f5f604083850312156100dc575f5ffd5b6100e5836100b0565b91506100f3602084016100b0565b90509250929050565b60805160a05160c051612a066101645f395f818160cf015281816118ca015261190601525f818161014c0152611de401525f818161017f01528181610296015281816106a7015281816109b301528181610d7d015281816110690152611a330152612a065ff3fe608060405260043610610099575f3560e01c80636115a29f116100625780636115a29f146101a157806365fd7c8f146101c0578063a9a7855f146101d3578063d7c17d32146101f2578063e08c480e14610206578063f1ae885614610225575f5ffd5b8062ae3bf81461009d578063110e10f5146100be57806323e30c8b1461010e57806331f7d9641461013b57806332fe7b261461016e575b5f5ffd5b3480156100a8575f5ffd5b506100bc6100b7366004611fd4565b610246565b005b3480156100c9575f5ffd5b506100f17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610119575f5ffd5b5061012d610128366004612033565b610429565b604051908152602001610105565b348015610146575f5ffd5b506100f17f000000000000000000000000000000000000000000000000000000000000000081565b348015610179575f5ffd5b506100f17f000000000000000000000000000000000000000000000000000000000000000081565b3480156101ac575f5ffd5b506100bc6101bb3660046120cf565b61053c565b6100bc6101ce366004612154565b61069c565b3480156101de575f5ffd5b506100bc6101ed3660046121bc565b6109a8565b3480156101fd575f5ffd5b506100bc610d2d565b348015610211575f5ffd5b506100bc61022036600461221f565b610ee4565b348015610230575f5ffd5b50610239610f75565b60405161010591906122d2565b60ff5f5c161561026957604051633ee5aeb560e01b815260040160405180910390fd5b60015f805c60ff19168217905d506040516349b509ff60e11b815233600482015230906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063936a13fe90602401602060405180830381865afa1580156102db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ff91906122e4565b6001600160a01b0316146103265760405163b46716cd60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa15801561036a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038e91906122ff565b905081816103c05760405163a4dfec7160e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b50336103d66001600160a01b0384168284610f91565b826001600160a01b03167f68f67de89e96b13a3ea058af5fd44cc125efceb528482d539c7b43db2faa066e8360405161041191815260200190565b60405180910390a2505f905060ff19815c16815d5050565b5f60025c6001600160a01b03163314610455576040516301176be360e51b815260040160405180910390fd5b600160ff600160a01b60015c0416600281111561047457610474612316565b0361048a5761048585858585610ff5565b6104d4565b600260ff600160a01b60015c041660028111156104a9576104a9612316565b036104bb576104858686868686611286565b60405163211bf9ef60e21b815260040160405180910390fd5b6104fe6001600160a01b0360025c166104ed868861233e565b6001600160a01b03891691906115a4565b5f6002805c6001600160a01b031916905d507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9979650505050505050565b5f61054d6040840160208501611fd4565b90505f6105606060850160408601612364565b600181111561057157610571612316565b0361066f576105866040840160208501611fd4565b6001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e591906122e4565b6001600160a01b031663483b24f06106036040860160208701611fd4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401606060405180830381865afa158015610645573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610669919061237d565b50909150505b6106888661068236859003850185612455565b83611639565b610694868686866109a8565b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106e557604051639e41bdd760e01b815260040160405180910390fd5b60ff5f5c161561070857604051633ee5aeb560e01b815260040160405180910390fd5b60015f805c60ff19168217905d50846107246020830183611fd4565b60016107336020880188611fd4565b806002805c6001600160a01b0319166001600160a01b03831617905d5081600160ff60a01b19815c16600160a01b83600281111561077357610773612316565b0217905d50835f60016101000a815c816001600160a01b0302191690836001600160a01b03160217905d50826001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fe91906122e4565b6001805c6001600160a01b0319166001600160a01b03831617905d50348060035d5061082d6020890189611fd4565b6001600160a01b0316635cffe9de3061084960208c018c611fd4565b6001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610884573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a891906122e4565b8b602001358b8b8b6040516020016108c2939291906124fa565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016108f09493929190612559565b6020604051808303815f875af115801561090c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610930919061258b565b61094d576040516301fabd5b60e71b815260040160405180910390fd5b5f6002805c6001600160a01b031916905d505f6001805c60ff60a01b1916905d505f610100600160a81b0319815c16815d505f6001805c6001600160a01b031916905d505f93505050815c60ff19169050815d505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109f157604051639e41bdd760e01b815260040160405180910390fd5b60ff5f5c1615610a1457604051633ee5aeb560e01b815260040160405180910390fd5b60015f805c60ff19168217905d5083610a336040830160208401611fd4565b6002610a426020850185611fd4565b806002805c6001600160a01b0319166001600160a01b03831617905d5081600160ff60a01b19815c16600160a01b836002811115610a8257610a82612316565b0217905d50835f60016101000a815c816001600160a01b0302191690836001600160a01b03160217905d50826001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0d91906122e4565b6001805c6001600160a01b0319166001600160a01b03831617905d50610b366020860186611fd4565b6001600160a01b0316635cffe9de30610b526020890189611fd4565b6001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb191906122e4565b610bc9610bc460408b0160208c01611fd4565b6116e5565b604051635f30114960e01b81526001600160a01b038e811660048301529190911690635f30114990602401602060405180830381865afa158015610c0f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3391906122ff565b8b8b8b604051602001610c48939291906125aa565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401610c769493929190612559565b6020604051808303815f875af1158015610c92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb6919061258b565b610cd3576040516301fabd5b60e71b815260040160405180910390fd5b5f6002805c6001600160a01b031916905d505f6001805c60ff60a01b1916905d505f610100600160a81b0319815c16815d505f6001805c6001600160a01b031916905d505f93505050815c60ff19169050815d5050505050565b60ff5f5c1615610d5057604051633ee5aeb560e01b815260040160405180910390fd5b60015f805c60ff19168217905d506040516349b509ff60e11b815233600482015230906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063936a13fe90602401602060405180830381865afa158015610dc2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de691906122e4565b6001600160a01b031614610e0d5760405163b46716cd60e01b815260040160405180910390fd5b475f81610e395760405163a4dfec7160e01b81526001600160a01b0390911660048201526024016103b7565b506040515f90339083908381818185875af1925050503d805f8114610e79576040519150601f19603f3d011682016040523d82523d5f602084013e610e7e565b606091505b5050905080610ea057604051630c08bcb960e21b815260040160405180910390fd5b6040518281525f907f68f67de89e96b13a3ea058af5fd44cc125efceb528482d539c7b43db2faa066e9060200160405180910390a2505f905060ff19815c16815d50565b610f6886610ef736849003840184612455565b610f046020860186611fd4565b6001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6391906122e4565b611639565b610694868686868661069c565b6040518060600160405280603881526020016129996038913981565b6040516001600160a01b03838116602483015260448201839052610ff091859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506117cb565b505050565b611015604080516060810182525f80825260208201819052909182015290565b5f60606110248486018661267d565b93509050611032818861182c565b9150505f818360200151611046919061233e565b60405163060d3c9f60e51b8152600481018290529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c1a793e090602401602060405180830381865afa1580156110ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d291906122ff565b90506110de8183612703565b91505f845f01516001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611120573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114491906122e4565b9050611151858483611986565b5f61115e865f01516116e5565b90506001600160a01b03811663d51641846111798b8d61233e565b60405160e083901b6001600160e01b031916815260048101919091523060248201526101005f5c046001600160a01b031660448201526064016020604051808303815f875af11580156111ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f291906122ff565b505060208501516001600160a01b036101005f5c0416907ff18030b7a463dc538970cd78fddc6f7046cfd4fc8bd4384144d29c15ed7bbab890868c876112388e8361233e565b604080519586526020860194909452928401919091526060830152608082015260a0810185905260c081018b905260e00160405180910390a261127b8183611a28565b505050505050505050565b5f8061129483850185612716565b915091505f6112a682602001516116e5565b90506112bc6001600160a01b03891682896115a4565b806001600160a01b031663e36754eb6112d483611ac6565b60405160e083901b6001600160e01b031916815260048101919091526101005f5c046001600160a01b031660248201526044016020604051808303815f875af1158015611323573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134791906122ff565b505f61135283611baf565b602084015160408086015190516306d29bb360e51b81529293505f926001600160a01b039283169263da5376609261139a9287923092610100895c0490911691600401612795565b6020604051808303815f875af11580156113b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113da91906122ff565b90505f6113e7868361182c565b90505f6113f48a8c61233e565b9050808210156114175760405163f538c00760e01b815260040160405180910390fd5b5f6114228284612703565b604080518e8152602081018e9052908101859052606081018690529091506101005f5c046001600160a01b0316907ff59a5048755853e275aa7b0a7c402a10078f1d3d98657c90dfd06f581683dc779060800160405180910390a2801561149f5761149f6001600160a01b038e8116906101005f5c041683610f91565b5f87602001516001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150491906122e4565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa15801561154b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156f91906122ff565b90508015611593576115936001600160a01b03838116906101005f5c041683610f91565b505050505050505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526115f58482611cf0565b611633576040516001600160a01b0384811660248301525f604483015261162991869182169063095ea7b390606401610fbe565b61163384826117cb565b50505050565b81602001515f0361164957505050565b8151602083015160408085015160608601516080870151925163d505accf60e01b81526001600160a01b0389811660048301523060248301526044820196909652606481019490945260ff909116608484015260a483015260c48201529082169063d505accf9060e4015f604051808303815f87803b1580156116ca575f5ffd5b505af19250505080156116db575060015b15610ff057505050565b6040805163aecc90cb60e01b815281515f92839283926001600160a01b0360015c169263aecc90cb92600480820193918290030181865afa15801561172c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061175091906127c0565b91509150816001600160a01b0316846001600160a01b031614806117855750806001600160a01b0316846001600160a01b0316145b6117a2576040516306cc02d160e01b815260040160405180910390fd5b836001600160a01b0316826001600160a01b0316146117c157816117c3565b805b949350505050565b5f6117df6001600160a01b03841683611d8d565b905080515f14158015611803575080806020019051810190611801919061258b565b155b15610ff057604051635274afe760e01b81526001600160a01b03841660048201526024016103b7565b5f5f8380602001905181019061184291906127f8565b60208101516040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561188f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118b391906122ff565b60208301519091506118ef906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000083610f91565b604051630a70b70160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906329c2dc049061193d90859088906004016128ec565b6020604051808303815f875af1158015611959573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197d91906122ff565b95945050505050565b611994818460200151611d9a565b82516119ab906001600160a01b03831690846115a4565b8251604080850151905163b7ec8d4b60e01b81526001600160a01b039283169263b7ec8d4b926119e89287926101005f5c0416919060040161295f565b6020604051808303815f875af1158015611a04573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061163391906122ff565b8015611ac257611ac27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ae52e04a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a8d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ab191906122e4565b6001600160a01b0384169083610f91565b5050565b604051630483b24f60e41b81526001600160a01b0382811660048301525f91829160015c169063483b24f090602401606060405180830381865afa158015611b10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b34919061237d565b6040516370a0823160e01b81526001600160a01b036101005f5c048116600483015291945090841692506370a0823191506024015b602060405180830381865afa158015611b84573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba891906122ff565b9392505050565b5f600182604001516001811115611bc857611bc8612316565b03611c465760208201516040516370a0823160e01b81526001600160a01b036101005f5c0481166004830152909116906370a0823190602401602060405180830381865afa158015611c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4091906122ff565b92915050565b6020820151604051630483b24f60e41b81526001600160a01b0391821660048201525f9160015c169063483b24f090602401606060405180830381865afa158015611c93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb7919061237d565b50506040516370a0823160e01b81526001600160a01b036101005f5c0481166004830152919250908216906370a0823190602401611b69565b5f5f5f846001600160a01b031684604051611d0b9190612982565b5f604051808303815f865af19150503d805f8114611d44576040519150601f19603f3d011682016040523d82523d5f602084013e611d49565b606091505b5091509150818015611d73575080511580611d73575080806020019051810190611d73919061258b565b801561197d5750505050506001600160a01b03163b151590565b6060611ba883835f611e5f565b60035c5f03611dc057611ac26001600160a01b03838116906101005f5c04163084611eff565b8060035c14611de2576040516337a515db60e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db060035c6040518263ffffffff1660e01b81526004015f604051808303818588803b158015611e3d575f5ffd5b505af1158015611e4f573d5f5f3e3d5ffd5b50505050505f600381905d505050565b606081471015611e8b5760405163cf47918160e01b8152476004820152602481018390526044016103b7565b5f5f856001600160a01b03168486604051611ea69190612982565b5f6040518083038185875af1925050503d805f8114611ee0576040519150601f19603f3d011682016040523d82523d5f602084013e611ee5565b606091505b5091509150611ef5868383611f38565b9695505050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526116339186918216906323b872dd90608401610fbe565b606082611f4d57611f4882611f94565b611ba8565b8151158015611f6457506001600160a01b0384163b155b15611f8d57604051639996b31560e01b81526001600160a01b03851660048201526024016103b7565b5080611ba8565b805115611fa45780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b50565b6001600160a01b0381168114611fbd575f5ffd5b5f60208284031215611fe4575f5ffd5b8135611ba881611fc0565b5f5f83601f840112611fff575f5ffd5b5081356001600160401b03811115612015575f5ffd5b60208301915083602082850101111561202c575f5ffd5b9250929050565b5f5f5f5f5f5f60a08789031215612048575f5ffd5b863561205381611fc0565b9550602087013561206381611fc0565b9450604087013593506060870135925060808701356001600160401b0381111561208b575f5ffd5b61209789828a01611fef565b979a9699509497509295939492505050565b5f606082840312156120b9575f5ffd5b50919050565b5f60a082840312156120b9575f5ffd5b5f5f5f5f5f61014086880312156120e4575f5ffd5b85356120ef81611fc0565b945060208601356001600160401b03811115612109575f5ffd5b61211588828901611fef565b9095509350612129905087604088016120a9565b91506121388760a088016120bf565b90509295509295909350565b5f604082840312156120b9575f5ffd5b5f5f5f5f5f60e08688031215612168575f5ffd5b853561217381611fc0565b94506121828760208801612144565b935060608601356001600160401b0381111561219c575f5ffd5b6121a888828901611fef565b9094509250612138905087608088016120a9565b5f5f5f5f60a085870312156121cf575f5ffd5b84356121da81611fc0565b935060208501356001600160401b038111156121f4575f5ffd5b61220087828801611fef565b9094509250612214905086604087016120a9565b905092959194509250565b5f5f5f5f5f5f6101808789031215612235575f5ffd5b863561224081611fc0565b955061224f8860208901612144565b945060608701356001600160401b03811115612269575f5ffd5b61227589828a01611fef565b9095509350612289905088608089016120a9565b91506122988860e089016120bf565b90509295509295509295565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611ba860208301846122a4565b5f602082840312156122f4575f5ffd5b8151611ba881611fc0565b5f6020828403121561230f575f5ffd5b5051919050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611c4057611c4061232a565b80356002811061235f575f5ffd5b919050565b5f60208284031215612374575f5ffd5b611ba882612351565b5f5f5f6060848603121561238f575f5ffd5b835161239a81611fc0565b60208501519093506123ab81611fc0565b60408501519092506123bc81611fc0565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156123fd576123fd6123c7565b60405290565b604051606081016001600160401b03811182821017156123fd576123fd6123c7565b604051601f8201601f191681016001600160401b038111828210171561244d5761244d6123c7565b604052919050565b5f60a0828403128015612466575f5ffd5b5061246f6123db565b8235815260208084013590820152604083013560ff81168114612490575f5ffd5b6040820152606083810135908201526080928301359281019290925250919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b600281106124f657634e487b7160e01b5f52602160045260245ffd5b9052565b608081525f61250d6080830185876124b2565b9050823561251a81611fc0565b6001600160a01b0316602083810191909152830135604080840191909152612543908401612351565b61255060608401826124da565b50949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611ef5908301846122a4565b5f6020828403121561259b575f5ffd5b81518015158114611ba8575f5ffd5b608081525f6125bd6080830185876124b2565b905082356125ca81611fc0565b6001600160a01b03166020838101919091528301356125e881611fc0565b6001600160a01b0316604083810191909152612543908401612351565b5f6001600160401b0382111561261d5761261d6123c7565b50601f01601f191660200190565b5f82601f83011261263a575f5ffd5b813561264d61264882612605565b612425565b818152846020838601011115612661575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f828403608081121561268f575f5ffd5b83356001600160401b038111156126a4575f5ffd5b6126b08682870161262b565b9350506060601f19820112156126c4575f5ffd5b506126cd612403565b60208401356126db81611fc0565b8152604084013560208201526126f360608501612351565b6040820152809150509250929050565b81810381811115611c4057611c4061232a565b5f5f8284036080811215612728575f5ffd5b83356001600160401b0381111561273d575f5ffd5b6127498682870161262b565b9350506060601f198201121561275d575f5ffd5b50612766612403565b602084013561277481611fc0565b8152604084013561278481611fc0565b60208201526126f360608501612351565b8481526001600160a01b038481166020830152831660408201526080810161197d60608301846124da565b5f5f604083850312156127d1575f5ffd5b82516127dc81611fc0565b60208401519092506127ed81611fc0565b809150509250929050565b5f60208284031215612808575f5ffd5b81516001600160401b0381111561281d575f5ffd5b820160a0818503121561282e575f5ffd5b6128366123db565b815161284181611fc0565b8152602082015161285181611fc0565b6020820152604082015161286481611fc0565b6040820152606082015161287781611fc0565b606082015260808201516001600160401b03811115612894575f5ffd5b80830192505084601f8301126128a8575f5ffd5b81516128b661264882612605565b8181528660208386010111156128ca575f5ffd5b8160208501602083015e5f918101602001919091526080820152949350505050565b6040815260018060a01b03835116604082015260018060a01b03602084015116606082015260018060a01b03604084015116608082015260018060a01b0360608401511660a08201525f608084015160a060c084015261294f60e08401826122a4565b9150508260208301529392505050565b8381526001600160a01b0383166020820152606081016117c360408301846124da565b5f82518060208501845e5f92019182525091905056fe4c6576657261676520776974682073696c6f20666c6173686c6f616e20616e6420307820286f7220636f6d70617469626c65292073776170a2646970667358221220feaa5a2f0aeed9eb4f8ffa04bcd5204c42fb47b77c5cbace95ee98613b0ca9fa64736f6c634300081c00336080604052348015600e575f5ffd5b506107858061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c806329c2dc041461002d575b5f5ffd5b61004061003b3660046105f3565b610052565b60405190815260200160405180910390f35b81515f906001600160a01b031661007c576040516301fa152160e31b815260040160405180910390fd5b6100a283606001518385602001516001600160a01b03166101609092919063ffffffff16565b5f5f845f01516001600160a01b031685608001516040516100c39190610703565b5f604051808303815f865af19150503d805f81146100fc576040519150601f19603f3d011682016040523d82523d5f602084013e610101565b606091505b50915091508161011b5761011b8162e902f160e21b610223565b610128856040015161023f565b9250825f0361014a57604051631125efa160e21b815260040160405180910390fd5b610157856020015161023f565b50505092915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526101b184826102c8565b61021d576040516001600160a01b0384811660248301525f604483015261021391869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610369565b61021d8482610369565b50505050565b81511561023257815182602001fd5b61023b816103d4565b5050565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610283573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a79190610719565b905080156102c3576102c36001600160a01b0383163383610405565b919050565b5f5f5f846001600160a01b0316846040516102e39190610703565b5f604051808303815f865af19150503d805f811461031c576040519150601f19603f3d011682016040523d82523d5f602084013e610321565b606091505b509150915081801561034b57508051158061034b57508080602001905181019061034b9190610730565b801561036057505f856001600160a01b03163b115b95945050505050565b5f61037d6001600160a01b03841683610436565b905080515f141580156103a157508080602001905181019061039f9190610730565b155b156103cf57604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b505050565b6040805160048152602481019091526020810180516001600160e01b03166001600160e01b03198416178152815190fd5b6040516001600160a01b038381166024830152604482018390526103cf91859182169063a9059cbb906064016101e1565b606061044383835f61044a565b9392505050565b6060814710156104765760405163cf47918160e01b8152476004820152602481018390526044016103c6565b5f5f856001600160a01b031684866040516104919190610703565b5f6040518083038185875af1925050503d805f81146104cb576040519150601f19603f3d011682016040523d82523d5f602084013e6104d0565b606091505b50915091506104e08683836104ea565b9695505050505050565b6060826104ff576104fa82610546565b610443565b815115801561051657506001600160a01b0384163b155b1561053f57604051639996b31560e01b81526001600160a01b03851660048201526024016103c6565b5080610443565b8051156105565780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b60405160a0810167ffffffffffffffff811182821017156105a6576105a661056f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156105d5576105d561056f565b604052919050565b80356001600160a01b03811681146102c3575f5ffd5b5f5f60408385031215610604575f5ffd5b823567ffffffffffffffff81111561061a575f5ffd5b830160a0818603121561062b575f5ffd5b610633610583565b61063c826105dd565b815261064a602083016105dd565b602082015261065b604083016105dd565b604082015261066c606083016105dd565b6060820152608082013567ffffffffffffffff81111561068a575f5ffd5b80830192505085601f83011261069e575f5ffd5b813567ffffffffffffffff8111156106b8576106b861056f565b6106cb601f8201601f19166020016105ac565b8181528760208386010111156106df575f5ffd5b816020850160208301375f6020928201830152608083015290969401359450505050565b5f82518060208501845e5f920191825250919050565b5f60208284031215610729575f5ffd5b5051919050565b5f60208284031215610740575f5ffd5b81518015158114610443575f5ffdfea2646970667358221220be7c1a5b3a5e814cf5d6eb914ea9f0f12ce9485db611939b8bad05d0febcdfc064736f6c634300081c0033e0e65c783ac33ff1c5ccf4399c9185066773921d6f8d050bf80781603021f09765d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a000000000000000000000000e8e8041cb5e3158a0829a19e014ca1cf91098554000000000000000000000000e8e8041cb5e3158a0829a19e014ca1cf91098554000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2