0 txs
0 calls
constructor
constructor(address _gvFactory, address _priceAggregator, address _helper, address _WETH)
functions
checkCollateral
viewfunction checkCollateral(address vault) view returns (bool)
getVaultInstructions
viewfunction getVaultInstructions(address vault) view returns (tuple)
getVaultPath
viewfunction getVaultPath(address vault, uint256 index, bool isPath0) view returns (bytes, uint256)
getVaultPaths
viewfunction getVaultPaths(address vault, bool isPath0) view returns (bytes[] paths)
gvFactory
viewfunction gvFactory() view returns (address)
helper
viewfunction helper() view returns (address)
manager
viewfunction manager() view returns (address)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
priceAggregator
viewfunction priceAggregator() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
validatePrices
viewfunction validatePrices(address vault, uint256 gsPrice, uint256 lpPrice) view returns (bool)
WETH
viewfunction WETH() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addVaultPath
nonpayablefunction addVaultPath(address vault, bytes path, bool isPath0)
clearToken
nonpayablefunction clearToken(address token, address to, uint256 minAmt)
freeReservedLPTokens
nonpayablefunction freeReservedLPTokens(address vault, uint256 lpTokens)
initialize
nonpayablefunction initialize(address _manager)
processDepositsAndWithdrawals
nonpayablefunction processDepositsAndWithdrawals(address vault, uint256 price, bytes overrides, uint256 deadline)
processFeeCollection
nonpayablefunction processFeeCollection(address vault, uint256 deadline)
rebalanceAndProcessDepositsAndWithdrawals
nonpayablefunction rebalanceAndProcessDepositsAndWithdrawals(address vault, uint256 price, uint256 deadline)
rebalancePosition
nonpayablefunction rebalancePosition(address vault, uint256 price, bytes overrides, uint256 deadline)
refundETH
payablefunction refundETH() payable
removeVaultPath
nonpayablefunction removeVaultPath(address vault, uint256 index, bool isPath0)
sendTokensCallback
nonpayablefunction sendTokensCallback(address[] tokens, uint256[] amounts, address payee, bytes data)
setManager
nonpayablefunction setManager(address _manager)
setVaultInstructions
nonpayablefunction setVaultInstructions(address vault, tuple instr)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unwrapWETH
payablefunction unwrapWETH(uint256 minAmt, address to) payable
updateVaultPath
nonpayablefunction updateVaultPath(address vault, uint256 index, bytes path, bool isPath0)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed currentOwner, address indexed newOwner)
Upgraded
event Upgraded(address indexed implementation)
errors
AlreadyInitialized
error AlreadyInitialized()
AMMMidPriceDeviation
error AMMMidPriceDeviation()
AMMPriceDeviation
error AMMPriceDeviation()
Expired
error Expired()
Forbidden
error Forbidden()
InvalidIndex
error InvalidIndex()
InvalidVault
error InvalidVault()
InvalidVaultPath
error InvalidVaultPath(uint8 id)
MaxLiquidityDelta
error MaxLiquidityDelta()
MaxTick
error MaxTick()
MinAssetQty
error MinAssetQty()
MinLiquidity
error MinLiquidity()
MinNAV
error MinNAV()
MissingVault
error MissingVault()
NotEnoughTokens
error NotEnoughTokens()
NotEnoughWETH
error NotEnoughWETH()
NotGammaPool
error NotGammaPool()
NotWETH
error NotWETH()
OverridesUsed
error OverridesUsed()
PriceDiffPct
error PriceDiffPct()
PriceRange
error PriceRange()
ST_Fail
error ST_Fail()
STE_Fail
error STE_Fail()
STF_Fail
error STF_Fail()
ZeroAddress
error ZeroAddress()
ZeroAggPrice
error ZeroAggPrice()
ZeroPrice
error ZeroPrice()
creation bytecode
0x6101206040523060a0523480156200001657600080fd5b5060405162005fd338038062005fd383398101604081905262000039916200009b565b6001600160a01b0390811660805260008054336001600160a01b0319918216811790925594821660c05292811660e052166101005260028054909216179055620000f8565b80516001600160a01b03811681146200009657600080fd5b919050565b60008060008060808587031215620000b257600080fd5b620000bd856200007e565b9350620000cd602086016200007e565b9250620000dd604086016200007e565b9150620000ed606086016200007e565b905092959194509250565b60805160a05160c05160e05161010051615e03620001d0600039600081816104d001528181611a4d015281816120940152818161218201528181612a9301528181613c7d01528181613d1101528181613dc80152818161408601526145c40152600081816102b5015261222701526000818161049c01526123a0015260008181610c2c01528181610c75015281816110c10152818161110101526111940152600081816101f6015281816105a7015281816116f8015281816117aa01528181613aa501528181613aeb0152613b620152615e036000f3fe6080604052600436106101e65760003560e01c8063622f18f811610102578063c4d66de811610095578063e30c397811610064578063e30c39781461063c578063e3f953b21461065c578063f2fde38b14610689578063f4307ef6146106a957600080fd5b8063c4d66de8146105c9578063ccbe764a146105e9578063d0ebdbe714610609578063e16d9ce51461062957600080fd5b806377c7fa04116100d157806377c7fa041461054057806379ba5097146105605780638da5cb5b14610575578063ad5c46481461059557600080fd5b8063622f18f81461048a57806363b0e66a146104be5780636464a1eb146104f2578063737a3f5a1461051257600080fd5b8063393f58251161017a5780634b82529b116101495780634b82529b146103e45780634e4bbc9a146104275780634f1ef2861461045457806352d1902d1461046757600080fd5b8063393f5825146103645780633e84e4f614610384578063423ce9f8146103a4578063481c6a75146103c457600080fd5b80633078fff5116101b65780633078fff5146102a3578063350b24b7146102f457806335132c65146103245780633659cfe61461034457600080fd5b80628ae9721461023b5780630bd54ddc1461025b57806312210e8a1461027b5780632e26bf201461028357600080fd5b3661023657336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461023457604051635724f38560e01b815260040160405180910390fd5b005b600080fd5b34801561024757600080fd5b50610234610256366004614a56565b6106c9565b34801561026757600080fd5b50610234610276366004614ac1565b6107d3565b6102346108ba565b34801561028f57600080fd5b5061023461029e366004614b21565b6108cc565b3480156102af57600080fd5b506102d77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561030057600080fd5b5061031461030f366004614b63565b610938565b60405190151581526020016102eb565b34801561033057600080fd5b5061023461033f366004614b98565b610af2565b34801561035057600080fd5b5061023461035f366004614bf0565b610c22565b34801561037057600080fd5b5061023461037f366004614ac1565b610d0a565b34801561039057600080fd5b5061023461039f366004614b63565b610db5565b3480156103b057600080fd5b506102346103bf366004614c48565b611036565b3480156103d057600080fd5b506002546102d7906001600160a01b031681565b3480156103f057600080fd5b506103146103ff366004614bf0565b6001600160a01b0316600090815260036020526040902060010154600160481b900460ff1690565b34801561043357600080fd5b50610447610442366004614d88565b6110a2565b6040516102eb9190614e66565b610234610462366004614e79565b6110b7565b34801561047357600080fd5b5061047c611187565b6040519081526020016102eb565b34801561049657600080fd5b506102d77f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ca57600080fd5b506102d77f000000000000000000000000000000000000000000000000000000000000000081565b3480156104fe57600080fd5b5061023461050d366004614f0c565b61123a565b34801561051e57600080fd5b5061053261052d366004614b21565b6112ab565b6040516102eb929190614fe7565b34801561054c57600080fd5b5061023461055b366004615009565b6113bc565b34801561056c57600080fd5b50610234611428565b34801561058157600080fd5b506000546102d7906001600160a01b031681565b3480156105a157600080fd5b506102d77f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d557600080fd5b506102346105e4366004614bf0565b6114cc565b3480156105f557600080fd5b50610234610604366004615035565b611630565b34801561061557600080fd5b50610234610624366004614bf0565b6116cf565b610234610637366004615076565b6116e0565b34801561064857600080fd5b506001546102d7906001600160a01b031681565b34801561066857600080fd5b5061067c610677366004614bf0565b611818565b6040516102eb919061509b565b34801561069557600080fd5b506102346106a4366004614bf0565b611829565b3480156106b557600080fd5b506102346106c4366004615009565b6118c6565b6106d1611951565b6106da84611997565b6106e58483836119e4565b6001600160a01b038416600090815260046020526040902081156107665780546001600160801b0316841061072d576040516363df817160e01b815260040160405180910390fd5b600084815260018201602052604081206107469161484d565b60008481526001820160205260409020610760848261522f565b506107cc565b8054600160801b90046001600160801b03168410610797576040516363df817160e01b815260040160405180910390fd5b600084815260028201602052604081206107b09161484d565b600084815260028201602052604090206107ca848261522f565b505b5050505050565b6002546107e8906001600160a01b0316611b3a565b806107f281611b63565b6107fb85611997565b6000856001600160a01b031663fef840ff6040518163ffffffff1660e01b815260040161054060405180830381865afa15801561083c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108609190615367565b905060008061086f8887611b84565b9150915061087e838389611cb7565b610891836102800151846080015161215c565b80156108b057604051633a4f97af60e21b815260040160405180910390fd5b5050505050505050565b47156108ca576108ca33476121b1565b565b6108d4611951565b6108dd83611997565b6001600160a01b0383166000908152600460205260409020811561091957600083815260018201602052604081206109149161484d565b610932565b600083815260028201602052604081206109329161484d565b50505050565b600061094384611997565b6001600160a01b03841660009081526003602090815260409182902082516101c081018452815461ffff80821683526201000082048116948301949094526401000000008104841694820194909452600160301b840483166060820152600160401b80850484166080830152600160501b8504841660a0830152600160601b8504841660c0830152600160701b8504841660e08301819052600160801b86048516610100840152600160901b860490941661012083018190526001600160401b03600160a01b909604861661014084015260019093015494851661016083015260ff90850481161515610180830152600160481b90940490931615156101a0840152603c8210610a535781610a56565b603c5b915060648161ffff1610610a6a5780610a6d565b60645b90506103848261ffff1611610a825781610a86565b6103845b91506103e88161ffff1611610a9b5780610a9f565b6103e85b9050610acd868460c00151846004610ab79190615644565b610ac2856002615644565b876101800151612225565b610ae3858460c00151846004610ab79190615644565b600193505050505b9392505050565b60005483906001600160a01b03163314158015610b2857506001600160a01b03811633141580610b285750610b268161237c565b155b15610b4657604051631dd2188d60e31b815260040160405180910390fd5b610b4f84611997565b610b5a8484846119e4565b6001600160a01b03841660009081526004602052604090208215610bcc5780546001600160801b031660009081526001820160205260409020610b9d858261522f565b5080546001600160801b03808216600101166fffffffffffffffffffffffffffffffff199091161781556107cc565b8054600160801b90046001600160801b031660009081526002820160205260409020610bf8858261522f565b5080546001600160801b8083046001600160801b0390811692909201821602911617905550505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c735760405162461bcd60e51b8152600401610c6a90615662565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610cbc600080516020615d87833981519152546001600160a01b031690565b6001600160a01b031614610ce25760405162461bcd60e51b8152600401610c6a906156ae565b610ceb81612413565b60408051600080825260208201909252610d079183919061241b565b50565b600254610d1f906001600160a01b0316611b3a565b80610d2981611b63565b610d3285611997565b6000856001600160a01b031663fef840ff6040518163ffffffff1660e01b815260040161054060405180830381865afa158015610d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d979190615367565b9050600080610da68887611b84565b9150915061087e838389612586565b600254610dca906001600160a01b0316611b3a565b80610dd481611b63565b610ddd84611997565b6000846001600160a01b031663fef840ff6040518163ffffffff1660e01b815260040161054060405180830381865afa158015610e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e429190615367565b6001600160a01b038616600090815260036020908152604080832081516101c081018352815461ffff80821683526201000082048116958301959095526401000000008104851693820193909352600160301b830484166060820152600160401b80840485166080830152600160501b8404851660a0830152600160601b8404851660c0830152600160701b8404851660e0830152600160901b840485166101208301526001600160401b03600160a01b8504811661014084015260019093015492831661016083015260ff9083048116151561018083015261010082018690526101a0820195909552949550600160801b90910490911691600160481b909104161515610f508884612b5a565b610f5b848489611cb7565b61ffff8216610100840152610f708884612b5a565b876001600160a01b031663fef840ff6040518163ffffffff1660e01b815260040161054060405180830381865afa158015610faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd39190615367565b9350611003610fe6856102600151612d85565b6001600160a01b0316856103a001516001600160401b0316612d97565b9650611010848489612586565b8015156101a08401526110238884612b5a565b6108b0846102800151856080015161215c565b60005482906001600160a01b0316331415801561106c57506001600160a01b0381163314158061106c575061106a8161237c565b155b1561108a57604051631dd2188d60e31b815260040160405180910390fd5b61109383611997565b61109d8383612b5a565b505050565b60606110ae8383612db8565b90505b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110ff5760405162461bcd60e51b8152600401610c6a90615662565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611148600080516020615d87833981519152546001600160a01b031690565b6001600160a01b03161461116e5760405162461bcd60e51b8152600401610c6a906156ae565b61117782612413565b6111838282600161241b565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112275760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c6a565b50600080516020615d8783398151915290565b6000611248828401846156fa565b90503315611269576040516368e0934d60e01b815260040160405180910390fd5b6108b088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050845191508790508989612f41565b606060006112b885611997565b6001600160a01b0385166000908152600460205260409020836112fc57600085815260028201602052604090208154600160801b90046001600160801b0316611318565b6000858152600182016020526040902081546001600160801b03165b818054611324906151af565b80601f0160208091040260200160405190810160405280929190818152602001828054611350906151af565b801561139d5780601f106113725761010080835404028352916020019161139d565b820191906000526020600020905b81548152906001019060200180831161138057829003601f168201915b50939850506001600160801b0390931695505050505050935093915050565b6002546113d1906001600160a01b0316611b3a565b6040516319ec413960e01b8152600481018290526001600160a01b038316906319ec4139906024015b600060405180830381600087803b15801561141457600080fd5b505af11580156107ca573d6000803e3d6000fd5b60015433906001600160a01b031681146114725760405162461bcd60e51b815260206004820152600b60248201526a2737ba2732bba7bbb732b960a91b6044820152606401610c6a565b600080546001600160a01b038381166001600160a01b031980841682178555600180549091169055604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600154600160a81b900460ff16158080156114f2575060018054600160a01b900460ff16105b806115125750303b158015611512575060018054600160a01b900460ff16145b6115755760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c6a565b6001805460ff60a01b1916600160a01b17905580156115a2576001805460ff60a81b1916600160a81b1790555b6000546001600160a01b0316156115cb5760405162dc149f60e41b815260040160405180910390fd5b600080546001600160a01b031916331790556115e682612fbd565b8015611183576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169b919061576b565b9050818110156116be576040516308aeed0f60e21b815260040160405180910390fd5b801561093257610932848483613006565b6116d7611951565b610d0781612fbd565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176b919061576b565b90508281101561178e5760405163d666767760e01b815260040160405180910390fd5b801561109d57604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156117f657600080fd5b505af115801561180a573d6000803e3d6000fd5b5050505061109d82826121b1565b611820614887565b6110b1826130e9565b611831611951565b6001600160a01b0381166118755760405162461bcd60e51b815260206004820152600b60248201526a5a65726f4164647265737360a81b6044820152606401610c6a565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227009190a350565b6002546118db906001600160a01b0316611b3a565b806118e581611b63565b6118ee83611997565b826001600160a01b031663b719f0d46040518163ffffffff1660e01b815260040160408051808303816000875af115801561192d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cc9190615784565b6000546001600160a01b031633146108ca5760405162461bcd60e51b81526020600482015260096024820152682337b93134b23232b760b91b6044820152606401610c6a565b6001600160a01b0381166119be57604051630708003560e21b815260040160405180910390fd5b6119c78161237c565b610d0757604051630681d31960e51b815260040160405180910390fd5b6000836001600160a01b031663fef840ff6040518163ffffffff1660e01b815260040161054060405180830381865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a499190615367565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1cf40b8484611a8b57836103400151611a92565b8361032001515b85611aa257846103200151611aa9565b8461034001515b6040518463ffffffff1660e01b8152600401611ac7939291906157a8565b602060405180830381865afa158015611ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0891906157db565b6109325781611b18576001611b1b565b60005b60405163604137d760e11b815260ff9091166004820152602401610c6a565b6001600160a01b0381163314610d0757604051631dd2188d60e31b815260040160405180910390fd5b42811015610d0757604051630407b05b60e31b815260040160405180910390fd5b611b8c614887565b815115801590611bb15782806020019051810190611baa91906157f8565b9150611cb0565b6001600160a01b03841660009081526003602090815260409182902082516101c081018452815461ffff80821683526201000082048116948301949094526401000000008104841694820194909452600160301b840483166060820152600160401b80850484166080830152600160501b8504841660a0830152600160601b8504841660c0830152600160701b8504841660e0830152600160801b85048416610100830152600160901b85049093166101208201526001600160401b03600160a01b909404841661014082015260019091015492831661016082015260ff91830482161515610180820152600160481b9092041615156101a082015291505b9250929050565b611cc6838383600160006131f0565b9050611d5f60405180610200016040528060006001600160a01b031681526020016000815260200160008152602001600060020b8152602001600060020b815260200160008152602001606081526020016060815260200160008152602001600081526020016000815260200160008152602001600061ffff1681526020016000815260200160008152602001600061ffff1681525090565b83516001600160a01b031681526103a08401516001600160401b031661010082015261038084015115611dc457670de0b6b3a76400008361016001516001600160401b031683611daf9190615908565b611db99190615935565b610120820152611df6565b6101608301516001600160401b0316611de583670de0b6b3a7640000615908565b611def9190615935565b6101208201525b608083015161ffff166101808201526102e08401516103a085015161014085015160405163331eb04360e11b8152600481018690526001600160401b039283166024820152911660448201526001606482015260009182916001600160a01b039091169063663d608690608401608060405180830381865afa158015611e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea49190615957565b600292830b60808801529290910b60608601526103a0880151909350909150611ed79083906001600160401b0316612d97565b9150611ef181876103a001516001600160401b0316612d97565b6102e08701518451610120860151604051631deb4d5760e31b81526001600160a01b0392831660048201526024810187905260448101859052606481018990526084810191909152600060a48201819052600160c483015293945091169063ef5a6ab89060e40160e060405180830381865afa158015611f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f99919061599a565b805161014086015290506000611fb7611fb28486615908565b613272565b9050600085610140015111611fcd576000611ff4565b6101408501516020830151611fea90670de0b6b3a7640000615908565b611ff49190615935565b6001600160801b031660a086015260c08201516120149089908890613307565b60e087015260c086015286516101408601516127109161203a9161ffff90911690615908565b6120449190615935565b61014086015260208083015190880151612062919061ffff166133b2565b610160860152606087015161ffff166101e086015261012085015160405163e13b91eb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163e13b91eb916120d2918591600401918252602082015260400190565b602060405180830381865afa1580156120ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612113919061576b565b6101c086015260a0808801519083015161214d91612710916121399161ffff1690615908565b6121439190615935565b8360a001516133ec565b6101a08601526108b085613402565b60405163f26802cf60e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f26802cf906044016113fa565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146121fe576040519150601f19603f3d011682016040523d82523d6000602084013e612203565b606091505b505090508061109d576040516325e5592160e21b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081801561225b57506001600160a01b03811615155b801561226b575060008561ffff16115b1561235b57604051633ebde64b60e11b815261ffff808716600483015285166024820152600060448201819052906001600160a01b03831690637d7bcc9690606401602060405180830381865afa1580156122ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ee919061576b565b90508060000361231157604051637481ca2160e11b815260040160405180910390fd5b600087118015612325575060008461ffff16115b801561233b575061233b87828661ffff16613591565b1561235957604051633ee2eebb60e11b815260040160405180910390fd5b505b856000036107ca57604051634dfba02360e01b815260040160405180910390fd5b6040516324de43d160e21b81526001600160a01b03828116600483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906393790f4490602401602060405180830381865afa1580156123e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240b919061576b565b141592915050565b610d07611951565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561244e5761109d836135ee565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156124a8575060408051601f3d908101601f191682019092526124a59181019061576b565b60015b61250b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c6a565b600080516020615d87833981519152811461257a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c6a565b5061109d83838361368a565b612595838383600060016131f0565b905060006125bc846104600151856104800151866103a001516001600160401b03166136af565b90508360a00151600014806125d357506080840151155b1561262b57612604846102600151856102a00151866103a001516001600160401b0316866080015161ffff1661370b565b61262b84610260015182866103a001516001600160401b0316866080015161ffff166137c4565b6126b460405180610180016040528060006001600160a01b0316815260200160608152602001606081526020016000815260200160008152602001600081526020016000815260200160006001600160801b0316815260200160006001600160801b03168152602001600061ffff168152602001600061ffff1681526020016000151581525090565b84516001600160a01b039081168083526102e087015160405163591da9eb60e11b815260048101929092526024820186905260016044830152600092169063b23b53d69060640160e060405180830381865afa158015612718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061273c919061599a565b805160608401819052909150612753576000612779565b6060820151602082015161276f90670de0b6b3a7640000615908565b6127799190615935565b6001600160801b031660e083015260c08101516127999087908690613307565b604084015260208301526103808601516000906127bb578661018001516127c2565b8661016001515b6001600160801b0316905081608001511561288b5782600001516001600160a01b031663522d6ae86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283d919061576b565b612848906064615908565b826040015111156128865760408083015160a0850181905290870151612710916128769161ffff1690615908565b6128809190615935565b60a08401525b61293a565b82600001516001600160a01b031663a6eef1616040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f1919061576b565b6128fc906064615908565b8260600151111561293a57606082015160a0840181905260408701516127109161292a9161ffff1690615908565b6129349190615935565b60a08401525b816080015115801561298e575060008761052001511161295b57600061298e565b670853a0d2313c00008761052001518360400151670de0b6b3a76400006129829190615908565b61298c9190615935565b115b158015610160850152612a105782606001518760e00151116129b15760006129c5565b82606001518760e001516129c59190615a25565b6060840152855161ffff166129e1576001600160801b03612a06565b856000015161ffff1683606001516127106129fc9190615908565b612a069190615935565b6060840152612a3b565b612710866000015161ffff168460600151612a2b9190615908565b612a359190615935565b60608401525b612a518260200151876020015161ffff166133b2565b60808085019190915286015161ffff9081166101208501526060870151166101408085019190915287015160405163e13b91eb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163e13b91eb91612ad1918891600401918252602082015260400190565b602060405180830381865afa158015612aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b12919061576b565b6001600160801b031661010084015260a08087015190830151612b4191612710916121399161ffff1690615908565b60c0840152612b4f836137ee565b505050505050505050565b8060036000846001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555060408201518160000160046101000a81548161ffff021916908361ffff16021790555060608201518160000160066101000a81548161ffff021916908361ffff16021790555060808201518160000160086101000a81548161ffff021916908361ffff16021790555060a082015181600001600a6101000a81548161ffff021916908361ffff16021790555060c082015181600001600c6101000a81548161ffff021916908361ffff16021790555060e082015181600001600e6101000a81548161ffff021916908361ffff1602179055506101008201518160000160106101000a81548161ffff021916908361ffff1602179055506101208201518160000160126101000a81548161ffff021916908361ffff1602179055506101408201518160000160146101000a8154816001600160401b0302191690836001600160401b031602179055506101608201518160010160006101000a8154816001600160401b0302191690836001600160401b031602179055506101808201518160010160086101000a81548160ff0219169083151502179055506101a08201518160010160096101000a81548160ff0219169083151502179055509050505050565b6000612d9082613a0a565b5092915050565b600080612da48484613a7f565b9050612db08180615908565b949350505050565b6001600160a01b038216600090815260046020526040812060609183612def578154600160801b90046001600160801b0316612dfb565b81546001600160801b03165b6001600160801b03169050806001600160401b03811115612e1e57612e1e614929565b604051908082528060200260200182016040528015612e5157816020015b6060815260200190600190039081612e3c5790505b50925060005b81811015612f385784612e795760008181526002840160205260409020612e8a565b600081815260018401602052604090205b8054612e95906151af565b80601f0160208091040260200160405190810160405280929190818152602001828054612ec1906151af565b8015612f0e5780601f10612ee357610100808354040283529160200191612f0e565b820191906000526020600020905b815481529060010190602001808311612ef157829003601f168201915b5050505050848281518110612f2557612f25615a38565b6020908102919091010152600101612e57565b50505092915050565b845160005b81811015612fb4576000848483818110612f6257612f62615a38565b905060200201351115612fac57612fac878281518110612f8457612f84615a38565b60200260200101518787878786818110612fa057612fa0615a38565b90506020020135613aa3565b600101612f46565b50505050505050565b6001600160a01b038116612fe45760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b03838116602483015260448201839052600091829186169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516130609190615a4e565b6000604051808303816000865af19150503d806000811461309d576040519150601f19603f3d011682016040523d82523d6000602084013e6130a2565b606091505b50915091508180156130cc5750805115806130cc5750808060200190518101906130cc91906157db565b6107cc5760405163847ea61d60e01b815260040160405180910390fd5b6130f1614887565b506001600160a01b031660009081526003602090815260409182902082516101c081018452815461ffff80821683526201000082048116948301949094526401000000008104841694820194909452600160301b840483166060820152600160401b80850484166080830152600160501b8504841660a0830152600160601b8504841660c0830152600160701b8504841660e0830152600160801b85048416610100830152600160901b85049093166101208201526001600160401b03600160a01b909404841661014082015260019091015492831661016082015260ff91830482161515610180820152600160481b9092041615156101a082015290565b6000806131fe878787613baf565b909550905083158061322457506000876105200151118015613224575060008760800151115b15613267576132678661014001516001600160401b031687610100015161ffff16838a61046001518b61048001518c6103a001516001600160401b031689613c37565b509295945050505050565b60008160000361328457506000919050565b506001600160881b03811160071b81811c68ffffffffffffffffff1060061b1781811c64ffffffffff1060051b1781811c62ffffff1060041b1781811c620100000160b5600192831c1b0260121c80830401811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b82516103a0840151610380850151606092839290916001600160401b03909116901561336d578661016001516001600160801b0316851015613355578661016001516001600160801b031694505b613363828688846001613d0c565b90945092506133a8565b8661018001516001600160801b0316851015613395578661018001516001600160801b031694505b6133a3828683896000613d0c565b945092505b5050935093915050565b600081156133e2576127106133c78385615908565b6133d19190615935565b6133db9084615a6a565b90506110b1565b5060001992915050565b60008183106133fb57816110ae565b5090919050565b60006134118260000151613e71565b9050613440816102600151826102a00151836103a001516001600160401b031685610180015161ffff1661370b565b81600001516001600160a01b03166331c8b8856040518061012001604052808560200151815260200185604001518152602001856060015160020b8152602001856080015160020b81526020018560a0015181526020018560c0015181526020018560e00151815260200185610100015181526020018561012001518152506040518263ffffffff1660e01b81526004016134db9190615a7d565b600060405180830381600087803b1580156134f557600080fd5b505af1158015613509573d6000803e3d6000fd5b50505050600061351c8360000151613e71565b905060008260800151118015613536575060008260e00151115b1561355f5761355f81846101c001518560a00151866101e0015161ffff1687610160015161402e565b61357e826103000151836102c001518360a001518661014001516140e0565b61109d8360000151846101a00151614171565b6000816000036135a357506000610aeb565b6000836135b286612710615908565b6135bc9190615935565b90506135ca612710846133ec565b925061271080840190849003818311806135e357508083105b979650505050505050565b6001600160a01b0381163b61365b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c6a565b600080516020615d8783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613693836141fc565b6000825111806136a05750805b1561109d57610932838361423c565b6000806136bb85614261565b6001600160a01b0316905060006136d185614261565b6001600160a01b031690506136e68285612d97565b91506136f28185612d97565b9050613701611fb28284615908565b9695505050505050565b600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561374c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137709190615b38565b506001600160701b03918216935016905060008261378e8684615908565b6137989190615935565b90506137a68188878761458d565b15612fb457604051639eefc25d60e01b815260040160405180910390fd5b6137d08385848461458d565b1561093257604051634d21261560e11b815260040160405180910390fd5b60008060006138008460000151613e71565b905061382f816102600151826102a00151836103a001516001600160401b031687610120015161ffff1661370b565b83516020850151604080870151905163a4f46f9f60e01b81526001600160a01b039093169263a4f46f9f92613868929091600401615b7d565b60408051808303816000875af1158015613886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138aa9190615ba2565b8093508194505050600084600001516001600160a01b031663fef840ff6040518163ffffffff1660e01b815260040161054060405180830381865afa1580156138f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391b9190615367565b9050613952818661010001516001600160801b03168760e001516001600160801b031688610140015161ffff16896080015161402e565b8461016001511561399f5760008160e001518360e0015111613975576000613989565b8160e001518360e001516139899190615a25565b905061399981876060015161463a565b506139bd565b6139bd816103000151826102c001518360a0015188606001516140e0565b60008460ff161180156139d357508460a0015183105b156139f157604051630281d4dd60e51b815260040160405180910390fd5b613a0385600001518660c00151614171565b5050915091565b600080826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015613a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6f9190615bce565b5094989397509295505050505050565b6000600160601b613a8f83613272565b613a999085615908565b6110ae9190615935565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015613ae45750804710155b15613b88577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613b4457600080fd5b505af1158015613b58573d6000803e3d6000fd5b50505050506109147f00000000000000000000000000000000000000000000000000000000000000008383613006565b306001600160a01b03841603613ba357610914848383613006565b6109328484848461465b565b60008082600003613bfb576000613bca866102600151613a0a565b8093508192505050613bf3816001600160a01b0316876103a001516001600160401b0316612d97565b935050613c0d565b613c09856102600151613a0a565b9150505b613c2c838560c001518660e00151876101200151886101800151612225565b829150935093915050565b604051636bd23b7960e01b81526004810188905260248101879052600286810b604483015285810b606483015284900b608482015260a4810183905281151560c48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636bd23b799060e401602060405180830381865afa158015613ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf091906157db565b612fb457604051620522c960ec1b815260040160405180910390fd5b6060807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166360122ff287613d498a87612db8565b6040518363ffffffff1660e01b8152600401613d66929190615c62565b6000604051808303816000875af1158015613d85573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dad9190810190615c7b565b915083613dba8688615908565b613dc49190615935565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166360122ff287613e018a8715612db8565b6040518363ffffffff1660e01b8152600401613e1e929190615c62565b6000604051808303816000875af1158015613e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e659190810190615c7b565b90509550959350505050565b6040805161054081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081018290526102a081018290526102c081018290526102e08101829052610300810182905261032081018290526103408101829052610360810182905261038081018290526103a081018290526103c081018290526103e08101829052610400810182905261042081018290526104408101829052610460810182905261048081018290526104a081018290526104c081018290526104e081018290526105008101829052610520810191909152613fcb82611997565b816001600160a01b031663fef840ff6040518163ffffffff1660e01b815260040161054060405180830381865afa15801561400a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b19190615367565b610280850151608086015160e08701516040516326ad99dd60e11b81526001600160a01b03938416600482015260248101929092526044820152606481018690526084810185905260a4810184905260c481018390527f000000000000000000000000000000000000000000000000000000000000000090911690634d5b33ba9060e401600060405180830381600087803b1580156140cc57600080fd5b505af1158015612b4f573d6000803e3d6000fd5b604051632292c74960e21b81526001600160a01b03848116600483015260248201849052851690638a4b1d2490604401602060405180830381865afa15801561412d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614151919061576b565b81111561093257604051630131cd7b60e51b815260040160405180910390fd5b6000826001600160a01b03166311ebc6196040518163ffffffff1660e01b815260040160a060405180830381865afa1580156141b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d59190615ce8565b5050505090508082111561109d5760405163d17579f560e01b815260040160405180910390fd5b614205816135ee565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110ae8383604051806060016040528060278152602001615da760279139614746565b60008060008360020b12614278578260020b614285565b8260020b61428590615d35565b9050614294620d89e719615d51565b62ffffff168111156142b95760405163d63f4fb360e01b815260040160405180910390fd5b6000816001166000036142d057600160801b6142e2565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03169050600282161561430c576ffff97272373d413259a46990580e213a0260801c5b600482161561432b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561434a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614369576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614388576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156143a7576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156143c6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156143e6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614406576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614426576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614446576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614466576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614486576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156144a6576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156144c6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156144e7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614507576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614526576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614543576b048a170391f7dc42444e8fa20260801c5b60008460020b13156145645780600019816145605761456061591f565b0490505b64010000000081061561457857600161457b565b60005b60ff16602082901c0192505050919050565b6040516386ba229960e01b8152600481018590526001600160a01b03848116602483015260448201849052606482018390526000917f0000000000000000000000000000000000000000000000000000000000000000909116906386ba229990608401602060405180830381865afa15801561460d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463191906157db565b95945050505050565b80821115611183576040516312477ded60e01b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052600091829187169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516146bd9190615a4e565b6000604051808303816000865af19150503d80600081146146fa576040519150601f19603f3d011682016040523d82523d6000602084013e6146ff565b606091505b509150915081801561472957508051158061472957508080602001905181019061472991906157db565b6107ca5760405163e5c4a34160e01b815260040160405180910390fd5b6060600080856001600160a01b0316856040516147639190615a4e565b600060405180830381855af49150503d806000811461479e576040519150601f19603f3d011682016040523d82523d6000602084013e6147a3565b606091505b5091509150613701868383876060831561481e578251600003614817576001600160a01b0385163b6148175760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c6a565b5081612db0565b612db083838151156148335781518083602001fd5b8060405162461bcd60e51b8152600401610c6a9190615d73565b508054614859906151af565b6000825580601f10614869575050565b601f016020900490600052602060002090810190610d0791906148fb565b604080516101c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915290565b5b8082111561491057600081556001016148fc565b5090565b6001600160a01b0381168114610d0757600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516101c081016001600160401b038111828210171561496257614962614929565b60405290565b60405161054081016001600160401b038111828210171561496257614962614929565b604051601f8201601f191681016001600160401b03811182821017156149b3576149b3614929565b604052919050565b60006001600160401b038211156149d4576149d4614929565b50601f01601f191660200190565b600082601f8301126149f357600080fd5b8135614a06614a01826149bb565b61498b565b818152846020838601011115614a1b57600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114610d0757600080fd5b8035614a5181614a38565b919050565b60008060008060808587031215614a6c57600080fd5b8435614a7781614914565b93506020850135925060408501356001600160401b03811115614a9957600080fd5b614aa5878288016149e2565b9250506060850135614ab681614a38565b939692955090935050565b60008060008060808587031215614ad757600080fd5b8435614ae281614914565b93506020850135925060408501356001600160401b03811115614b0457600080fd5b614b10878288016149e2565b949793965093946060013593505050565b600080600060608486031215614b3657600080fd5b8335614b4181614914565b9250602084013591506040840135614b5881614a38565b809150509250925092565b600080600060608486031215614b7857600080fd5b8335614b8381614914565b95602085013595506040909401359392505050565b600080600060608486031215614bad57600080fd5b8335614bb881614914565b925060208401356001600160401b03811115614bd357600080fd5b614bdf868287016149e2565b9250506040840135614b5881614a38565b600060208284031215614c0257600080fd5b8135610aeb81614914565b61ffff81168114610d0757600080fd5b8035614a5181614c0d565b6001600160401b0381168114610d0757600080fd5b8035614a5181614c28565b6000808284036101e0811215614c5d57600080fd5b8335614c6881614914565b92506101c0601f198201811315614c7e57600080fd5b614c8661493f565b9150614c9460208601614c1d565b8252614ca260408601614c1d565b6020830152614cb360608601614c1d565b6040830152614cc460808601614c1d565b6060830152614cd560a08601614c1d565b6080830152614ce660c08601614c1d565b60a0830152614cf760e08601614c1d565b60c0830152610100614d0a818701614c1d565b60e0840152610120614d1d818801614c1d565b828501526101409150614d31828801614c1d565b90840152610160614d43878201614c3d565b828501526101809150614d57828801614c3d565b908401526101a0614d69878201614a46565b82850152614d78838801614a46565b9084015250929590945092505050565b60008060408385031215614d9b57600080fd5b8235614da681614914565b91506020830135614db681614a38565b809150509250929050565b60005b83811015614ddc578181015183820152602001614dc4565b50506000910152565b60008151808452614dfd816020860160208601614dc1565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015614e59578284038952614e47848351614de5565b98850198935090840190600101614e2f565b5091979650505050505050565b6020815260006110ae6020830184614e11565b60008060408385031215614e8c57600080fd5b8235614e9781614914565b915060208301356001600160401b03811115614eb257600080fd5b614ebe858286016149e2565b9150509250929050565b60008083601f840112614eda57600080fd5b5081356001600160401b03811115614ef157600080fd5b6020830191508360208260051b8501011115611cb057600080fd5b60008060008060008060006080888a031215614f2757600080fd5b87356001600160401b0380821115614f3e57600080fd5b614f4a8b838c01614ec8565b909950975060208a0135915080821115614f6357600080fd5b614f6f8b838c01614ec8565b909750955060408a01359150614f8482614914565b90935060608901359080821115614f9a57600080fd5b818a0191508a601f830112614fae57600080fd5b813581811115614fbd57600080fd5b8b6020828501011115614fcf57600080fd5b60208301945080935050505092959891949750929550565b604081526000614ffa6040830185614de5565b90508260208301529392505050565b6000806040838503121561501c57600080fd5b823561502781614914565b946020939093013593505050565b60008060006060848603121561504a57600080fd5b833561505581614914565b9250602084013561506581614914565b929592945050506040919091013590565b6000806040838503121561508957600080fd5b823591506020830135614db681614914565b815161ffff1681526101c0810160208301516150bd602084018261ffff169052565b5060408301516150d3604084018261ffff169052565b5060608301516150e9606084018261ffff169052565b5060808301516150ff608084018261ffff169052565b5060a083015161511560a084018261ffff169052565b5060c083015161512b60c084018261ffff169052565b5060e083015161514160e084018261ffff169052565b506101008381015161ffff908116918401919091526101208085015190911690830152610140808401516001600160401b03908116918401919091526101608085015190911690830152610180808401511515908301526101a080840151801515828501525b505092915050565b600181811c908216806151c357607f821691505b6020821081036151e357634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561109d57600081815260208120601f850160051c810160208610156152105750805b601f850160051c820191505b818110156107ca5782815560010161521c565b81516001600160401b0381111561524857615248614929565b61525c8161525684546151af565b846151e9565b602080601f83116001811461529157600084156152795750858301515b600019600386901b1c1916600185901b1785556107ca565b600085815260208120601f198616915b828110156152c0578886015182559484019460019091019084016152a1565b50858210156152de5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8051614a5181614914565b8051614a5181614c0d565b80516001600160801b0381168114614a5157600080fd5b8051614a5181614a38565b8051614a5181614c28565b805160ff81168114614a5157600080fd5b805162ffffff81168114614a5157600080fd5b8051600281900b8114614a5157600080fd5b6000610540828403121561537a57600080fd5b615382614968565b61538b836152ee565b8152615399602084016152f9565b60208201526153aa604084016152f9565b60408201526153bb606084016152f9565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e082015261010080840151818301525061012080840151818301525061014080840151818301525061016061541a818501615304565b9082015261018061542c848201615304565b908201526101a083810151908201526101c080840151908201526101e06154548185016152ee565b908201526102006154668482016152ee565b908201526102206154788482016152ee565b9082015261024061548a8482016152ee565b9082015261026061549c8482016152ee565b908201526102806154ae8482016152ee565b908201526102a06154c08482016152ee565b908201526102c06154d28482016152ee565b908201526102e06154e48482016152ee565b908201526103006154f68482016152ee565b908201526103206155088482016152ee565b9082015261034061551a8482016152ee565b9082015261036061552c8482016152ee565b9082015261038061553e84820161531b565b908201526103a0615550848201615326565b908201526103c0615562848201615326565b908201526103e0615574848201615331565b90820152610400615586848201615331565b90820152610420615598848201615342565b908201526104406155aa848201615355565b908201526104606155bc848201615355565b908201526104806155ce848201615355565b908201526104a06155e0848201615326565b908201526104c06155f28482016152f9565b908201526104e06156048482016152ee565b90820152610500615616848201615331565b90820152610520928301519281019290925250919050565b634e487b7160e01b600052601160045260246000fd5b61ffff8181168382160280821691908281146151a7576151a761562e565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006060828403121561570c57600080fd5b604051606081018181106001600160401b038211171561572e5761572e614929565b604052823561573c81614914565b8152602083013561574c81614914565b6020820152604083013561575f81614c0d565b60408201529392505050565b60006020828403121561577d57600080fd5b5051919050565b6000806040838503121561579757600080fd5b505080516020909101519092909150565b6060815260006157bb6060830186614de5565b6001600160a01b0394851660208401529290931660409091015292915050565b6000602082840312156157ed57600080fd5b8151610aeb81614a38565b60006101c0828403121561580b57600080fd5b61581361493f565b61581c836152f9565b815261582a602084016152f9565b602082015261583b604084016152f9565b604082015261584c606084016152f9565b606082015261585d608084016152f9565b608082015261586e60a084016152f9565b60a082015261587f60c084016152f9565b60c082015261589060e084016152f9565b60e08201526101006158a38185016152f9565b908201526101206158b58482016152f9565b908201526101406158c7848201615326565b908201526101606158d9848201615326565b908201526101806158eb84820161531b565b908201526101a06158fd84820161531b565b908201529392505050565b80820281158282048414176110b1576110b161562e565b634e487b7160e01b600052601260045260246000fd5b60008261595257634e487b7160e01b600052601260045260246000fd5b500490565b6000806000806080858703121561596d57600080fd5b61597685615355565b935061598460208601615355565b6040860151606090960151949790965092505050565b600060e082840312156159ac57600080fd5b60405160e081018181106001600160401b03821117156159ce576159ce614929565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151615a0381614a38565b608082015260a0838101519082015260c0928301519281019290925250919050565b818103818111156110b1576110b161562e565b634e487b7160e01b600052603260045260246000fd5b60008251615a60818460208701614dc1565b9190910192915050565b808201808211156110b1576110b161562e565b60208152815160208201526020820151604082015260006040830151615aa8606084018260020b9052565b506060830151615abd608084018260020b9052565b50608083015160a083015260a08301516101208060c0850152615ae4610140850183614de5565b915060c0850151601f198584030160e0860152615b018382614de5565b60e087015161010087810191909152909601519190940152509192915050565b80516001600160701b0381168114614a5157600080fd5b600080600060608486031215615b4d57600080fd5b615b5684615b21565b9250615b6460208501615b21565b9150604084015163ffffffff81168114614b5857600080fd5b604081526000615b906040830185614de5565b82810360208401526146318185614de5565b60008060408385031215615bb557600080fd5b615bbe83615331565b9150602083015190509250929050565b600080600080600080600060e0888a031215615be957600080fd5b8751615bf481614914565b9650615c0260208901615355565b95506040880151615c1281614c0d565b6060890151909550615c2381614c0d565b6080890151909450615c3481614c0d565b9250615c4260a08901615331565b915060c0880151615c5281614a38565b8091505092959891949750929550565b828152604060208201526000612db06040830184614e11565b600060208284031215615c8d57600080fd5b81516001600160401b03811115615ca357600080fd5b8201601f81018413615cb457600080fd5b8051615cc2614a01826149bb565b818152856020838501011115615cd757600080fd5b614631826020830160208601614dc1565b600080600080600060a08688031215615d0057600080fd5b855194506020860151935060408601519250606086015191506080860151615d2781614a38565b809150509295509295909350565b6000600160ff1b8201615d4a57615d4a61562e565b5060000390565b60008160020b627fffff198103615d6a57615d6a61562e565b60000392915050565b6020815260006110ae6020830184614de556fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122017b0b93cf037b81ab722fd4bfbc0373af261da5c1986af1ca997136f4a11b4e664736f6c634300081500330000000000000000000000003e9955c6c6aa6af4f72cfaa7e9b7573f7ac2542900000000000000000000000091ce6553ab99f13f90b5b283622135e983d2ceb6000000000000000000000000e80bca82ba6106c190d9f74ef5fb20c8f6afca3f00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1