0 txs
0 calls
constructor
constructor((string assetName, string assetSymbol, address underlyingToken, address priceOracleMiddleware, (uint256 marketId, bytes32[] substrates)[] marketSubstratesConfigs, address[] fuses, (uint256 marketId, address fuse)[] balanceFuses, (uint256 iporDaoManagementFee, uint256 iporDaoPerformanceFee, uint256 atomistManagementFee, uint256 atomistPerformanceFee, address feeFactory, address feeRecipientAddress, address iporDaoFeeRecipientAddress) feeConfig, address accessManager, address plasmaVaultBase, uint256 totalSupplyCap, address withdrawManager) initData_)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
authority
viewfunction authority() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DEFAULT_SLIPPAGE_IN_PERCENTAGE
viewfunction DEFAULT_SLIPPAGE_IN_PERCENTAGE() view returns (uint256)
getUnrealizedManagementFee
viewfunction getUnrealizedManagementFee() view returns (uint256)
isConsumingScheduledOp
viewfunction isConsumingScheduledOp() view returns (bytes4)
maxDeposit
viewfunction maxDeposit(address) view returns (uint256)
maxMint
viewfunction maxMint(address) view returns (uint256)
maxRedeem
viewfunction maxRedeem(address owner) view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address owner) view returns (uint256)
name
viewfunction name() view returns (string)
PLASMA_VAULT_BASE
viewfunction PLASMA_VAULT_BASE() view returns (address)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
previewMint
viewfunction previewMint(uint256 shares) view returns (uint256)
previewRedeem
viewfunction previewRedeem(uint256 shares) view returns (uint256)
previewWithdraw
viewfunction previewWithdraw(uint256 assets) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalAssetsInMarket
viewfunction totalAssetsInMarket(uint256 marketId_) view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
claimRewards
nonpayablefunction claimRewards(tuple[] calls_)
deposit
nonpayablefunction deposit(uint256 assets_, address receiver_) returns (uint256)
depositWithPermit
nonpayablefunction depositWithPermit(uint256 assets_, address owner_, address receiver_, uint256 deadline_, uint8 v_, bytes32 r_, bytes32 s_) returns (uint256)
execute
nonpayablefunction execute(tuple[] calls_)
executeInternal
nonpayablefunction executeInternal(tuple[] calls_)
mint
nonpayablefunction mint(uint256 shares_, address receiver_) returns (uint256)
redeem
nonpayablefunction redeem(uint256 shares_, address receiver_, address owner_) returns (uint256)
setAuthority
nonpayablefunction setAuthority(address newAuthority)
transfer
nonpayablefunction transfer(address to_, uint256 value_) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from_, address to_, uint256 value_) returns (bool)
updateInternal
nonpayablefunction updateInternal(address, address, uint256)
updateMarketsBalances
nonpayablefunction updateMarketsBalances(uint256[] marketIds_) returns (uint256)
withdraw
nonpayablefunction withdraw(uint256 assets_, address receiver_, address owner_) returns (uint256)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
AuthorityUpdated
event AuthorityUpdated(address authority)
Deposit
event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)
Initialized
event Initialized(uint64 version)
ManagementFeeDataConfigured
event ManagementFeeDataConfigured(address feeAccount, uint256 feeInPercentage)
ManagementFeeRealized
event ManagementFeeRealized(uint256 unrealizedFeeInUnderlying, uint256 unrealizedFeeInShares)
MarketBalancesUpdated
event MarketBalancesUpdated(uint256[] marketIds, int256 deltaInUnderlying)
MarketSubstratesGranted
event MarketSubstratesGranted(uint256 marketId, bytes32[] substrates)
PerformanceFeeDataConfigured
event PerformanceFeeDataConfigured(address feeAccount, uint256 feeInPercentage)
PriceOracleMiddlewareChanged
event PriceOracleMiddlewareChanged(address newPriceOracleMiddleware)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Withdraw
event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
WithdrawManagerChanged
event WithdrawManagerChanged(address newWithdrawManager)
errors
AccessManagedInvalidAuthority
error AccessManagedInvalidAuthority(address authority)
AccessManagedRequiredDelay
error AccessManagedRequiredDelay(address caller, uint32 delay)
AccessManagedUnauthorized
error AccessManagedUnauthorized(address caller)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
ERC4626ExceededMaxDeposit
error ERC4626ExceededMaxDeposit(address receiver, uint256 assets, uint256 max)
ERC4626ExceededMaxMint
error ERC4626ExceededMaxMint(address receiver, uint256 shares, uint256 max)
ERC4626ExceededMaxRedeem
error ERC4626ExceededMaxRedeem(address owner, uint256 shares, uint256 max)
ERC4626ExceededMaxWithdraw
error ERC4626ExceededMaxWithdraw(address owner, uint256 assets, uint256 max)
FailedInnerCall
error FailedInnerCall()
HandlerNotFound
error HandlerNotFound()
InvalidInitialization
error InvalidInitialization()
InvalidManagementFee
error InvalidManagementFee(uint256 feeInPercentage)
InvalidPerformanceFee
error InvalidPerformanceFee(uint256 feeInPercentage)
MarketLimitExceeded
error MarketLimitExceeded(uint256 marketId, uint256 balanceInMarket, uint256 limit)
MathOverflowedMulDiv
error MathOverflowedMulDiv()
NoAssetsToDeposit
error NoAssetsToDeposit()
NoAssetsToWithdraw
error NoAssetsToWithdraw()
NoSharesToMint
error NoSharesToMint()
NoSharesToRedeem
error NoSharesToRedeem()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeCastOverflowedIntToUint
error SafeCastOverflowedIntToUint(int256 value)
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UnsupportedFuse
error UnsupportedFuse()
UnsupportedMethod
error UnsupportedMethod()
UnsupportedQuoteCurrencyFromOracle
error UnsupportedQuoteCurrencyFromOracle()
WithdrawIsNotAllowed
error WithdrawIsNotAllowed(address caller, uint256 requested)
WrongAddress
error WrongAddress()
WrongCaller
error WrongCaller(address caller)
creation bytecode
0x60a060405234801561001057600080fd5b506040516170b23803806170b283398101604081905261002f9161123d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03166000811580156100795750825b90506000826001600160401b031660011480156100955750303b155b9050811580156100a3575080155b156100c15760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156100ef57845460ff60401b1916680100000000000000001785555b855160208701516101009190610561565b604086015161010e90610577565b6101208601516001600160a01b0316608052855161010087015161014088015160405161019393634a5dc1b760e01b9361014f9391929091906024016113d2565b60408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b039384161790526080516001600160a01b03169161058b16565b506000866060015190506103486001600160a01b0316816001600160a01b031663f4a6e4586040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020b919061141d565b6001600160a01b03161461023257604051630dee4f2f60e41b815260040160405180910390fd5b606087015161024090610602565b610260633e3a86e060e01b8860a0015160405160240161014f9190611438565b5060005b8760c00151518110156102ec576102e3630c63abc660e01b8960c00151838151811061029257610292611484565b6020026020010151600001518a60c0015184815181106102b4576102b4611484565b60200260200101516020015160405160240161014f9291909182526001600160a01b0316602082015260400190565b50600101610264565b5060005b8760800151518110156103575761034f8860800151828151811061031657610316611484565b6020026020010151600001518960800151838151811061033857610338611484565b60200260200101516020015161067760201b60201c565b6001016102f0565b5060008760e00151608001516001600160a01b031663028756296040518061010001604052808b60e001516000015181526020018b60e001516020015181526020018b60e001516040015181526020018b60e001516060015181526020018b61010001516001600160a01b03168152602001306001600160a01b031681526020018b60e0015160a001516001600160a01b031681526020018b60e0015160c001516001600160a01b03168152506040518263ffffffff1660e01b81526004016104829190815181526020808301519082015260408083015190820152606080830151908201526080808301516001600160a01b039081169183019190915260a08084015182169083015260c08084015182169083015260e09283015116918101919091526101000190565b60c0604051808303816000875af11580156104a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c5919061149a565b90506104df81604001518260a001516107c960201b60201c565b6104f7816060015182608001516108c260201b60201c565b6104ff6109ad565b61016088015161050e906109f9565b5050831561055657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050506116f8565b610569610a67565b6105738282610ab7565b5050565b61057f610a67565b61058881610b20565b50565b6060600080846001600160a01b0316846040516105a8919061152e565b600060405180830381855af49150503d80600081146105e3576040519150601f19603f3d011682016040523d82523d6000602084013e6105e8565b606091505b5090925090506105f9858383610ba4565b95945050505050565b807f0d761ae54d86fc3be4f1f2b44ade677efb1c84a85fc6bb1d087dc42f1e319a0080546001600160a01b0319166001600160a01b0392831617905560405190821681527fd51f0f0ead29844497f2889430c7143324b01211d610174de544ac915ae5943f906020015b60405180910390a150565b60008281527f78e40624004925a4ef6749756748b1deddc674477302d5b7fe18e5335cde3900602052604090206106ad81610c03565b600082516001600160401b038111156106c8576106c8610e19565b6040519080825280602002602001820160405280156106f1578160200160208202803683370190505b50905060005b835181101561077357600183600001600086848151811061071a5761071a611484565b602002602001015181526020019081526020016000208190555083818151811061074657610746611484565b602002602001015182828151811061076057610760611484565b60209081029190910101526001016106f7565b5080516107899060018401906020840190610dc2565b507f7e2fec298d6e81dab091490fc6ab01dc37a9077786c1d533a01cdc6a8e0f426384846040516107bb92919061154a565b60405180910390a150505050565b6001600160a01b0382166107f057604051630d23cf4160e11b815260040160405180910390fd5b61138881111561081b57604051630a7e67f960e21b8152600481018290526024015b60405180910390fd5b7f9399757a27831a6cfb6cf4cd5c97a908a2f8f41e95a5952fbf83a04e0528840080546001600160a01b0319166001600160a01b03841617815561085e82610c59565b815461ffff91909116600160a01b0261ffff60a01b19909116178155604080516001600160a01b0385168152602081018490527fb51da3e1921b4e807ca7fadcf4582ef9ebbabde509ec7cecd222ca1fd4375df591015b60405180910390a1505050565b6001600160a01b0382166108e957604051630d23cf4160e11b815260040160405180910390fd5b6101f481111561090f576040516324f8f43160e11b815260048101829052602401610812565b7f239dd7e43331d2af55e2a25a6908f3bcec2957025f1459db97dcdc37c0003f0080546001600160a01b0319166001600160a01b03841617815561095282610c59565b815461ffff91909116600160a01b0261ffff60a01b19909116178155604080516001600160a01b0385168152602081018490527f72a8ee4b89f4194ad7e618624c280d66eb07d10b8cd84ab0376c16534413aa4091016108b5565b7f239dd7e43331d2af55e2a25a6908f3bcec2957025f1459db97dcdc37c0003f006109d742610c8c565b815463ffffffff91909116600160b01b0263ffffffff60b01b19909116179055565b807fb37e8684757599da669b8aea811ee2b3693b2582d2c730fab3f4965fa2ec3e1180546001600160a01b0319166001600160a01b0392831617905560405190821681527fd8f38238faf978f3ebd926ef7a8ea95baf4119bb290941e49c523f093ea30d949060200161066c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610ab557604051631afcd79f60e31b815260040160405180910390fd5b565b610abf610a67565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03610b0b8482611621565b5060048101610b1a8382611621565b50505050565b610b28610a67565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00600080610b5584610cbd565b9150915081610b65576012610b67565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b606082610bb957610bb482610d99565b610bfc565b8151158015610bd057506001600160a01b0384163b155b15610bf957604051639996b31560e01b81526001600160a01b0385166004820152602401610812565b50805b9392505050565b600181015460005b81811015610c54576000836000016000856001018481548110610c3057610c30611484565b60009182526020808320909101548352820192909252604001902055600101610c0b565b505050565b600061ffff821115610c88576040516306dfcc6560e41b81526010600482015260248101839052604401610812565b5090565b600063ffffffff821115610c88576040516306dfcc6560e41b81526020600482015260248101839052604401610812565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b03871691610d049161152e565b600060405180830381855afa9150503d8060008114610d3f576040519150601f19603f3d011682016040523d82523d6000602084013e610d44565b606091505b5091509150818015610d5857506020815110155b15610d8c57600081806020019051810190610d7391906116df565b905060ff8111610d8a576001969095509350505050565b505b5060009485945092505050565b805115610da95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b828054828255906000526020600020908101928215610dfd579160200282015b82811115610dfd578251825591602001919060010190610de2565b50610c889291505b80821115610c885760008155600101610e05565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715610e5157610e51610e19565b60405290565b60405161018081016001600160401b0381118282101715610e5157610e51610e19565b604051601f8201601f191681016001600160401b0381118282101715610ea257610ea2610e19565b604052919050565b60005b83811015610ec5578181015183820152602001610ead565b50506000910152565b600082601f830112610edf57600080fd5b81516001600160401b03811115610ef857610ef8610e19565b610f0b601f8201601f1916602001610e7a565b818152846020838601011115610f2057600080fd5b610f31826020830160208701610eaa565b949350505050565b80516001600160a01b0381168114610f5057600080fd5b919050565b60006001600160401b03821115610f6e57610f6e610e19565b5060051b60200190565b600082601f830112610f8957600080fd5b8151610f9c610f9782610f55565b610e7a565b8082825260208201915060208360051b860101925085831115610fbe57600080fd5b602085015b838110156110a85780516001600160401b03811115610fe157600080fd5b86016040818903601f19011215610ff757600080fd5b610fff610e2f565b6020820151815260408201516001600160401b0381111561101f57600080fd5b60208184010192505088601f83011261103757600080fd5b8151611045610f9782610f55565b8082825260208201915060208360051b86010192508b83111561106757600080fd5b6020850194505b8285101561108957845182526020948501949091019061106e565b8060208501525050508085525050602083019250602081019050610fc3565b5095945050505050565b600082601f8301126110c357600080fd5b81516110d1610f9782610f55565b8082825260208201915060208360051b8601019250858311156110f357600080fd5b602085015b838110156110a85761110981610f39565b8352602092830192016110f8565b600082601f83011261112857600080fd5b8151611136610f9782610f55565b8082825260208201915060208360061b86010192508583111561115857600080fd5b602085015b838110156110a8576040818803121561117557600080fd5b61117d610e2f565b8151815261118d60208301610f39565b60208201528084525060208301925060408101905061115d565b600060e082840312156111b957600080fd5b60405160e081016001600160401b03811182821017156111db576111db610e19565b6040908152835182526020808501519083015283810151908201526060808401519082015290508061120f60808401610f39565b608082015261122060a08401610f39565b60a082015261123160c08401610f39565b60c08201525092915050565b60006020828403121561124f57600080fd5b81516001600160401b0381111561126557600080fd5b8201610240818503121561127857600080fd5b611280610e57565b81516001600160401b0381111561129657600080fd5b6112a286828501610ece565b82525060208201516001600160401b038111156112be57600080fd5b6112ca86828501610ece565b6020830152506112dc60408301610f39565b60408201526112ed60608301610f39565b606082015260808201516001600160401b0381111561130b57600080fd5b61131786828501610f78565b60808301525060a08201516001600160401b0381111561133657600080fd5b611342868285016110b2565b60a08301525060c08201516001600160401b0381111561136157600080fd5b61136d86828501611117565b60c0830152506113808560e084016111a7565b60e08201526113926101c08301610f39565b6101008201526113a56101e08301610f39565b6101208201526102008201516101408201526113c46102208301610f39565b610160820152949350505050565b60608152600084518060608401526113f1816080850160208901610eaa565b6001600160a01b039490941660208301525060408101919091526080601f909201601f19160101919050565b60006020828403121561142f57600080fd5b610bfc82610f39565b602080825282518282018190526000918401906040840190835b818110156114795783516001600160a01b0316835260209384019390920191600101611452565b509095945050505050565b634e487b7160e01b600052603260045260246000fd5b600060c08284031280156114ad57600080fd5b5060405160c081016001600160401b03811182821017156114d0576114d0610e19565b6040526114dc83610f39565b81526114ea60208401610f39565b60208201526114fb60408401610f39565b604082015261150c60608401610f39565b60608201526080838101519082015260a0928301519281019290925250919050565b60008251611540818460208701610eaa565b9190910192915050565b6000604082018483526040602084015280845180835260608501915060208601925060005b8181101561158d57835183526020938401939092019160010161156f565b50909695505050505050565b600181811c908216806115ad57607f821691505b6020821081036115cd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610c5457806000526020600020601f840160051c810160208510156115fa5750805b601f840160051c820191505b8181101561161a5760008155600101611606565b5050505050565b81516001600160401b0381111561163a5761163a610e19565b61164e816116488454611599565b846115d3565b6020601f821160018114611682576000831561166a5750848201515b600019600385901b1c1916600184901b17845561161a565b600084815260208120601f198516915b828110156116b25787850151825560209485019460019092019101611692565b50848210156116d05786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6000602082840312156116f157600080fd5b5051919050565b60805161599161172160003960008181610333015281816103d5015261471c01526159916000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c80638fb3603711610160578063c63d75b6116100d8578063dd62ed3e1161008c578063e9a2e77811610071578063e9a2e778146106ee578063ef8b30f71461062a578063f538e5621461070157610292565b8063dd62ed3e14610676578063e3efd95f146106db57610292565b8063c74b5211116100bd578063c74b52111461063d578063ce96cb7714610650578063d905777e1461066357610292565b8063c63d75b614610617578063c6e6f5921461062a57610292565b8063b3d7f6b91161012f578063ba08765211610114578063ba087652146105e9578063baae8abf146105fc578063bf7e214f1461060f57610292565b8063b3d7f6b9146105c3578063b460af94146105d657610292565b80638fb360371461055c57806394bf804d1461059557806395d89b41146105a8578063a9059cbb146105b057610292565b8063313ce5671161020e578063402d267d116101c25780636e553f65116101a75780636e553f65146104e157806370a08231146104f45780637a9e5e4b1461054957610292565b8063402d267d146104ce5780634cdad5061461039a57610292565b80633887fd78116101f35780633887fd78146104a057806338d52e0f146104b35780634021a874146104bb57610292565b8063313ce5671461047157806332293ccc1461048b57610292565b80630971a9d01161026557806318160ddd1161024a57806318160ddd1461042f57806323b872dd146104565780633032403a1461046957610292565b80630971a9d0146103d05780630a28a4771461041c57610292565b806301e1d1141461036a57806306fdde031461038557806307a2d13a1461039a578063095ea7b3146103ad575b60003660606102c27f054644eb87255c1c6a2d10801735f52fa3b9d6e4477dbed74914d03844ab66005460011490565b156102e4576102cf610709565b5060408051602081019091526000815261035f565b61035c6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506108ea565b90505b915050805190602001f35b61037261096f565b6040519081526020015b60405180910390f35b61038d6109aa565b60405161037c9190614d4a565b6103726103a8366004614d5d565b610a7f565b6103c06103bb366004614d98565b610a8c565b604051901515815260200161037c565b6103f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161037c565b61037261042a366004614d5d565b610aa4565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610372565b6103c0610464366004614dc4565b610ab1565b610372610ad5565b610479610aec565b60405160ff909116815260200161037c565b61049e610499366004614dc4565b610af6565b005b6103726104ae366004614d5d565b610b28565b6103f7610b5b565b6103726104c9366004614e05565b610b9d565b6103726104dc366004614e7c565b610ca6565b6103726104ef366004614e99565b610d05565b610372610502366004614e7c565b73ffffffffffffffffffffffffffffffffffffffff1660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b61049e610557366004614e7c565b610d4d565b610564610e4d565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161037c565b6103726105a3366004614e99565b610ec2565b61038d610f6e565b6103c06105be366004614d98565b610fbf565b6103726105d1366004614d5d565b610fd4565b6103726105e4366004614ec9565b610fe1565b6103726105f7366004614ec9565b61117a565b61049e61060a366004614f57565b611362565b6103f76116c0565b610372610625366004614e7c565b6116e9565b610372610638366004614d5d565b61173d565b61049e61064b366004614f57565b61174a565b61037261065e366004614e7c565b611944565b610372610671366004614e7c565b611994565b610372610684366004614f99565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b61049e6106e9366004614f57565b6119de565b6103726106fc366004614f57565b611aad565b610372600281565b604080517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602080830191909152600080357fffffffff00000000000000000000000000000000000000000000000000000000166034840152835180840360180181526038909301845282519282019290922082527fb37e8684757599da669b8aea811ee2b3693b2582d2c730fab3f4965fa2ec3e009052205473ffffffffffffffffffffffffffffffffffffffff16806107f5576040517f4bf4de4e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061084f6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff861692915050611b1e565b9050805160000361085e575050565b600081806020019051810190610874919061506e565b6040517fc74b5211000000000000000000000000000000000000000000000000000000008152909150309063c74b5211906108b3908490600401615221565b600060405180830381600087803b1580156108cd57600080fd5b505af11580156108e1573d6000803e3d6000fd5b50505050505050565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161091491906152d1565b600060405180830381855af49150503d806000811461094f576040519150601f19603f3d011682016040523d82523d6000602084013e610954565b606091505b5091509150610964858383611b2c565b925050505b92915050565b60008061097a611bbb565b9050600061098782611da7565b90508181106109995760009250505090565b6109a3818361531c565b9250505090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916109fb9061532f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a279061532f565b8015610a745780601f10610a4957610100808354040283529160200191610a74565b820191906000526020600020905b815481529060010190602001808311610a5757829003601f168201915b505050505091505090565b6000610969826000611ed8565b600033610a9a818585611f31565b5060019392505050565b6000610969826001611f43565b6000610ac0335b600036611f93565b610acb848484612718565b90505b9392505050565b6000610ae7610ae2611bbb565b611da7565b905090565b6000610ae761273c565b6040517f1b517b1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008181527f656f5ca8c676f20b936e991a840e1130bdd664385322f33b6642ec86729ee6006020526040812054610969565b6000807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005b5473ffffffffffffffffffffffffffffffffffffffff1692915050565b6000610ba761278b565b610bb033610ab8565b610bb8610b5b565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152306024830152604482018b90526064820188905260ff8716608483015260a4820186905260c48201859052919091169063d505accf9060e401600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b50505050610c70888761280c565b9050610c9b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b979650505050505050565b600080610cb16128a7565b90506000610cdd7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b9050818110610cf0575060009392505050565b610cfd6103a8828461531c565b949350505050565b6000610d0f61278b565b610d1833610ab8565b610d22838361280c565b905061096960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b33610d566116c0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dd7576040517f068ca9d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163b600003610e40576040517fc2f31e5e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610dce565b610e49826128d1565b5050565b7ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a0080546000919074010000000000000000000000000000000000000000900460ff16610e9a576000610ebc565b7f8fb36037000000000000000000000000000000000000000000000000000000005b91505090565b6000610ecc61278b565b610ed533610ab8565b82600003610f0f576040517f01aeea5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f5c576040517f1a479e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f64612969565b610d228383612ae7565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916109fb9061532f565b6000610fca33610ab8565b610ace8383612b6e565b6000610969826001611ed8565b6000610feb61278b565b610ff433610ab8565b8360000361102e576040517fbb464a5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831661107b576040517f1a479e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611083612969565b600061108d61096f565b905061113a61109d600a87615382565b6110a5610b5b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015611111573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111359190615395565b612b7c565b61114381612ecd565b61114e858585612fe4565b915050610ace60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061118461278b565b61118d33610ab8565b836000036111c7576040517ff10cc93700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831615806111fe575073ffffffffffffffffffffffffffffffffffffffff8216155b15611235576040517f1a479e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61123d612969565b600080600061124a61096f565b905060005b600a81101561131f5761126188610a7f565b935061126b610b5b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156112d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fb9190615395565b92508383101561131f5761131761131185613075565b84612b7c565b60010161124f565b5061132981612ecd565b611334878787613096565b9350505050610ace60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b61136a61278b565b61137333610ab8565b8060008167ffffffffffffffff81111561138f5761138f614fc7565b6040519080825280602002602001820160405280156113b8578160200160208202803683370190505b50905060008060006113c861096f565b90506113f360017f054644eb87255c1c6a2d10801735f52fa3b9d6e4477dbed74914d03844ab660055565b60005b858110156116565761147c888883818110611413576114136153ae565b905060200281019061142591906153dd565b611433906020810190614e7c565b73ffffffffffffffffffffffffffffffffffffffff1660009081527f48932b860eb451ad240d4fe2b46522e5a0ac079d201fe50d4e0be078c75b54006020526040902054151590565b6114b2576040517f2356a16d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8787828181106114c4576114c46153ae565b90506020028101906114d691906153dd565b6114e4906020810190614e7c565b73ffffffffffffffffffffffffffffffffffffffff1663454dab236040518163ffffffff1660e01b8152600401602060405180830381865afa15801561152e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190615395565b925061155e858461311e565b1515600003611593578285858151811061157a5761157a6153ae565b60209081029190910101528361158f81615411565b9450505b61164d8888838181106115a8576115a86153ae565b90506020028101906115ba91906153dd565b6115c8906020810190615449565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b9150859050818110611611576116116153ae565b905060200281019061162391906153dd565b611631906020810190614e7c565b73ffffffffffffffffffffffffffffffffffffffff16906108ea565b506001016113f6565b5061168060007f054644eb87255c1c6a2d10801735f52fa3b9d6e4477dbed74914d03844ab660055565b61168984613185565b61169281612ecd565b5050505050610e4960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000807ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00610b80565b6000806116f46128a7565b905060006117207f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b9050818110611733575060009392505050565b610cfd818361531c565b6000610969826000611f43565b303314611785576040517f29507dbf000000000000000000000000000000000000000000000000000000008152336004820152602401610dce565b8060008167ffffffffffffffff8111156117a1576117a1614fc7565b6040519080825280602002602001820160405280156117ca578160200160208202803683370190505b50905060008060006117da61096f565b905060005b85811015611931576117fc888883818110611413576114136153ae565b611832576040517f2356a16d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b878782818110611844576118446153ae565b905060200281019061185691906153dd565b611864906020810190614e7c565b73ffffffffffffffffffffffffffffffffffffffff1663454dab236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190615395565b92506118de858461311e565b151560000361191357828585815181106118fa576118fa6153ae565b60209081029190910101528361190f81615411565b9450505b6119288888838181106115a8576115a86153ae565b506001016117df565b5061193b84613185565b6108e181612ecd565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006020526040812054610969906000611ed8565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006020526040812054610969565b6119e661278b565b6119ef33610ab8565b8060005b81811015611a8257611a79848483818110611a1057611a106153ae565b9050602002810190611a2291906153dd565b611a30906020810190615449565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250879150859050818110611611576116116153ae565b506001016119f3565b5050610e4960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000818103611ac557611abe61096f565b9050610969565b6000611acf61096f565b9050611b0d84848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061318592505050565b611b1681612ecd565b610cfd61096f565b6060610ace83836000613558565b606082611b4157611b3c8261361b565b610ace565b8151158015611b65575073ffffffffffffffffffffffffffffffffffffffff84163b155b15611bb4576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610dce565b5080610ace565b600080611bc6613660565b905073ffffffffffffffffffffffffffffffffffffffff811615611d07578073ffffffffffffffffffffffffffffffffffffffff1663722713f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c539190615395565b611c5b6136a0565b611c63610b5b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015611ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf39190615395565b611cfd9190615382565b610ebc9190615382565b611d0f6136a0565b611d17610b5b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015611d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfd9190615395565b600080611e5a60408051606081018252600080825260208201819052918101919091527f239dd7e43331d2af55e2a25a6908f3bcec2957025f1459db97dcdc37c0003f0060408051606081018252915473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000810461ffff166020840152760100000000000000000000000000000000000000000000900463ffffffff1690820152919050565b6020810151909150429061ffff161580611e7c5750604082015163ffffffff16155b80611e915750816040015163ffffffff168111155b15611ea0575060009392505050565b610cfd611ec785846040015163ffffffff1684611ebd919061531c565b6301e133806136c8565b836020015161ffff166127106136c8565b6000610ace611ee561096f565b611ef0906001615382565b611efc6002600a6155d1565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254611f289190615382565b859190856137c3565b611f3e8383836001613808565b505050565b6000610ace611f546002600a6155d1565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254611f809190615382565b611f8861096f565b611f28906001615382565b6000611fa260048284866155e0565b611fab9161560a565b9050600080807fb37e8684757599da669b8aea811ee2b3693b2582d2c730fab3f4965fa2ec3e115473ffffffffffffffffffffffffffffffffffffffff169050801580159061203b57507fb460af94000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008516145b15612210576120486116c0565b6040517f77d9737000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301523060248301527fffffffff000000000000000000000000000000000000000000000000000000008716604483015291909116906377d973709060640160408051808303816000875af11580156120e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121099190615684565b90935091506000612118613975565b6040517f533543f200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018390529192509083169063533543f2906044016020604051808303816000875af1158015612191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b591906156b9565b61220a576040517f7199992a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015260248101829052604401610dce565b506125bc565b73ffffffffffffffffffffffffffffffffffffffff81161580159061227657507fba087652000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008516145b15612356576122836116c0565b6040517f77d9737000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301523060248301527fffffffff000000000000000000000000000000000000000000000000000000008716604483015291909116906377d973709060640160408051808303816000875af1158015612320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123449190615684565b909350915060006121186103a8613975565b7f6e553f65000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000851614806123e757507f94bf804d000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008516145b8061243357507f4021a874000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008516145b8061247f57507fba087652000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008516145b806124cb57507fb460af94000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008516145b156125a3576124d86116c0565b6040517f77d9737000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301523060248301527fffffffff000000000000000000000000000000000000000000000000000000008716604483015291909116906377d973709060640160408051808303816000875af1158015612575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125999190615684565b90935091506125bc565b6125b66125ae6116c0565b88308761399b565b90935091505b826108e15763ffffffff8216156126ce577ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a0080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001781556126336116c0565b73ffffffffffffffffffffffffffffffffffffffff166394c7d7ee8989896040518463ffffffff1660e01b815260040161266f939291906156d4565b600060405180830381600087803b15801561268957600080fd5b505af115801561269d573d6000803e3d6000fd5b505082547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16909255506108e19050565b6040517f068ca9d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88166004820152602401610dce565b600033612726858285613b18565b612731858585613c00565b506001949350505050565b6000807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00905060028154610ebc919074010000000000000000000000000000000000000000900460ff1661573e565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612806576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b600082600003612848576040517f182b250f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612895576040517f1a479e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61289d612969565b610ace8383613cab565b60007f0f070392f17d5f958cc1ac31867dabecfc5c9758b4a419a200803226d7155d005b54919050565b7ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6000612a1b60408051606081018252600080825260208201819052918101919091527f239dd7e43331d2af55e2a25a6908f3bcec2957025f1459db97dcdc37c0003f0060408051606081018252915473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000810461ffff166020840152760100000000000000000000000000000000000000000000900463ffffffff1690820152919050565b90506000612a27610ad5565b9050612a31613d32565b6000612a3c8261173d565b905080600003612a4b57505050565b612a7460017faef487a7a52e82ae7bbc470b42be72a1d3c066fb83773bf99cce7e6a7df2f90055565b8251612a809082613da9565b612aa960007faef487a7a52e82ae7bbc470b42be72a1d3c066fb83773bf99cce7e6a7df2f90055565b60408051838152602081018390527fbb92eb7521ac4e9e56f7e75ea06a10cbc121c444e5d175fff5e8e0bc9e804937910160405180910390a1505050565b600080612af3836116e9565b905080841115612b55576040517f284ff66700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810185905260448101829052606401610dce565b6000612b6085610fd4565b9050610cfd33858388613e05565b600033610a9a818585613c00565b81600003612b88575050565b6000818310611f3e5760008060606000612ba0613ebc565b90506000815167ffffffffffffffff811115612bbe57612bbe614fc7565b604051908082528060200260200182016040528015612be7578160200160208202803683370190505b509050612bf4878961531c565b95506000806000845190505b8815801590612c0e57508083105b15612eb757612c36858481518110612c2857612c286153ae565b602002602001015184613f47565b95508860001b86600081518110612c4f57612c4f6153ae565b602002602001018181525050612d2586604051602401612c6f9190615757565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fbe1946da000000000000000000000000000000000000000000000000000000001790528651879086908110612cf957612cf96153ae565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108ea90919063ffffffff16565b50612d2e610b5b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015612d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dbe9190615395565b9150818b1115612dd957612dd2828c61531c565b9850612dde565b600098505b848381518110612df057612df06153ae565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663454dab236040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e669190615395565b9650612e72848861311e565b1515600003612ea75786848981518110612e8e57612e8e6153ae565b602090810291909101015287612ea381615411565b9850505b612eb083615411565b9250612c00565b612ec084613185565b5050505050505050505050565b6000612ed761096f565b905081811015612ee5575050565b6000612f65604080518082018252600080825260209182015281518083019092527f9399757a27831a6cfb6cf4cd5c97a908a2f8f41e95a5952fbf83a04e052884005473ffffffffffffffffffffffffffffffffffffffff8116835261ffff74010000000000000000000000000000000000000000909104169082015290565b90506000612f76611ec7858561531c565b9050612fa160017faef487a7a52e82ae7bbc470b42be72a1d3c066fb83773bf99cce7e6a7df2f90055565b8151612fb590612fb08361173d565b613da9565b612fde60007faef487a7a52e82ae7bbc470b42be72a1d3c066fb83773bf99cce7e6a7df2f90055565b50505050565b600080612ff083611944565b905080851115613052576040517ffe9cceec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810186905260448101829052606401610dce565b600061305d86610aa4565b905061306c3386868985614021565b95945050505050565b600061308c61308560028461579a565b6064614129565b6109699083615382565b6000806130a283611994565b905080851115613104576040517fb94abeec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810186905260448101829052606401610dce565b600061310f86610a7f565b905061306c338686848a614021565b6000805b835181101561317e5783818151811061313d5761313d6153ae565b60200260200101516000031561317e5782848281518110613160576131606153ae565b602002602001015103613176576001915061317e565b600101613122565b5092915050565b60006131a4604051806040016040528060008152602001606081525090565b60008060006131b286614135565b80519091506000806131c2614369565b73ffffffffffffffffffffffffffffffffffffffff1663b3596f076131e5610b5b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016040805180830381865afa15801561324d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061327191906157b1565b915091508267ffffffffffffffff81111561328e5761328e614fc7565b6040519080825280602002602001820160405280156132d357816020015b60408051808201909152600080825260208201528152602001906001900390816132ac5790505b50602088015260005b838110156134f1578481815181106132f6576132f66153ae565b6020026020010151600003156134f15761336a85828151811061331b5761331b6153ae565b602002602001015160009081527f150144dd6af711bac4392499881ec6649090601bd196a5ece5174c1400b1f700602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f722713f7000000000000000000000000000000000000000000000000000000001790529097506133e59073ffffffffffffffffffffffffffffffffffffffff8916906108ea565b8060200190518101906133f89190615395565b985084818151811061340c5761340c6153ae565b60200260200101518860200151828151811061342a5761342a6153ae565b60209081029190910101515261347361345761344784600a6157d5565b613451908c61579a565b85614129565b6002613461610aec565b61346b91906157e1565b60ff16614391565b88602001518281518110613489576134896153ae565b602002602001015160200181815250506134dd8582815181106134ae576134ae6153ae565b6020026020010151896020015183815181106134cc576134cc6153ae565b6020026020010151602001516143ea565b6134e790876157fa565b95506001016132dc565b5084156135015761350185614439565b613509611bbb565b8752613514876144d1565b7ff1adf92ee604e0c353dfd4481bacd575b0419a97b473374d7822e0c3cdfb29548486604051613545929190615822565b60405180910390a1505050505050505050565b606081471015613596576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610dce565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516135bf91906152d1565b60006040518083038185875af1925050503d80600081146135fc576040519150601f19603f3d011682016040523d82523d6000602084013e613601565b606091505b5091509150613611868383611b2c565b9695505050505050565b80511561362b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60007f08c469289c3f85d9b575f3ae9be6831541ff770a06ea135aa343a4de7c962d005b5473ffffffffffffffffffffffffffffffffffffffff16919050565b60007f24e02552e88772b8e8fd15f3e6699ba530635ffc6b52322da922b0b497a773006128cb565b6000838302817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709828110838203039150508060000361371d578382816137135761371361586f565b0492505050610ace565b808411613756576040517f227bc15300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000806137d18686866136c8565b90506137dc8361465e565b80156137f85750600084806137f3576137f361586f565b868809115b1561306c57613611600182615382565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0073ffffffffffffffffffffffffffffffffffffffff8516613879576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610dce565b73ffffffffffffffffffffffffffffffffffffffff84166138c9576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610dce565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526001830160209081526040808320938816835292905220839055811561396e578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161396591815260200190565b60405180910390a35b5050505050565b60008061398536600481846155e0565b8101906139929190614ec9565b50909392505050565b60405173ffffffffffffffffffffffffffffffffffffffff848116602483015283811660448301527fffffffff0000000000000000000000000000000000000000000000000000000083166064830152600091829182918291891690608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb70096130000000000000000000000000000000000000000000000000000000017905251613a7b91906152d1565b600060405180830381855afa9150503d8060008114613ab6576040519150601f19603f3d011682016040523d82523d6000602084013e613abb565b606091505b50915091508115613b0d576040815110613aed5780806020019051810190613ae39190615684565b9094509250613b0d565b6020815110613b0d5780806020019051810190613b0a91906156b9565b93505b505094509492505050565b73ffffffffffffffffffffffffffffffffffffffff83811660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612fde5781811015613bf1576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610dce565b612fde84848484036000613808565b73ffffffffffffffffffffffffffffffffffffffff8316613c50576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610dce565b73ffffffffffffffffffffffffffffffffffffffff8216613ca0576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610dce565b611f3e83838361468b565b600080613cb783610ca6565b905080841115613d19576040517f79012fb200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810185905260448101829052606401610dce565b6000613d248561173d565b9050610cfd33858784613e05565b7f239dd7e43331d2af55e2a25a6908f3bcec2957025f1459db97dcdc37c0003f00613d5c42614742565b815463ffffffff91909116760100000000000000000000000000000000000000000000027fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff909116179055565b73ffffffffffffffffffffffffffffffffffffffff8216613df9576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610dce565b610e496000838361468b565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e008054613e4a9073ffffffffffffffffffffffffffffffffffffffff16863086614790565b613e548483613da9565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051613965929190918252602082015260400190565b60607fd243afa3da07e6bdec20fdd573a17f99411aa8a62ae64ca2c426d3a86ae0ac00805460408051602080840282018101909252828152929190830182828015613f3d57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311613f12575b5050505050905090565b60607f45a704819a9dcb1bb5b8cff129eda642cf0e926a9ef104e27aa53f1d1fa47b006040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660208201526034810184905260009060540160405160208183030381529060405280519060200120815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561401457602002820191906000526020600020905b815481526020019060010190808311614000575b5050505050905092915050565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0073ffffffffffffffffffffffffffffffffffffffff8681169085161461406d5761406d848784613b18565b6140778483614819565b805461409a9073ffffffffffffffffffffffffffffffffffffffff168685614875565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8686604051614119929190918252602082015260400190565b60405180910390a4505050505050565b6000610ace828461589e565b8051606090600081900361414a575090919050565b600061415782600261579a565b67ffffffffffffffff81111561416f5761416f614fc7565b604051908082528060200260200182016040528015614198578160200160208202803683370190505b50905083600060605b825115614360576141b385600261579a565b67ffffffffffffffff8111156141cb576141cb614fc7565b6040519080825280602002602001820160405280156141f4578160200160208202803683370190505b5090506000805b845181101561434e576142278686838151811061421a5761421a6153ae565b602002602001015161311e565b614346578386510361424d5761424a8687516002614245919061579a565b6148b3565b95505b84818151811061425f5761425f6153ae565b6020026020010151868581518110614279576142796153ae565b602090810291909101015261428d84615411565b935060006142b38683815181106142a6576142a66153ae565b602002602001015161494f565b51905080156143445760005b8181101561434257838551036142e4576142e18586516002614245919061579a565b94505b6142f98784815181106142a6576142a66153ae565b818151811061430a5761430a6153ae565b6020026020010151858581518110614324576143246153ae565b602090810291909101015261433884615411565b93506001016142bf565b505b505b6001016141fb565b50614358826149d0565b9350506141a1565b610c9b846149d0565b60007f0d761ae54d86fc3be4f1f2b44ade677efb1c84a85fc6bb1d087dc42f1e319a00613684565b6000601282036143a2575081610969565b60128211156143cb576143b660128361531c565b6143c19060126157d5565b611abe908461579a565b611abe836143da84601261531c565b6143e590600a6157d5565b614129565b60008281527f656f5ca8c676f20b936e991a840e1130bdd664385322f33b6642ec86729ee6006020526040812080549083905561442681614b5f565b61442f84614b5f565b610cfd91906158b2565b600081121561448f5761445361444e826158d2565b614bbe565b7f24e02552e88772b8e8fd15f3e6699ba530635ffc6b52322da922b0b497a77300805460009061448490849061531c565b9091555061365d9050565b61449881614bbe565b7f24e02552e88772b8e8fd15f3e6699ba530635ffc6b52322da922b0b497a7730080546000906144c9908490615382565b909155505050565b600080527fc2733c187287f795e2e6e84d35552a190e774125367241c3e99e955f4babf0006020527ff1a5acf64f330322c7b96c9822a41f340e067e2cefe46839a37cd61f2a91150c546145225750565b60208101515160005b81811015611f3e5760006145a27fc2733c187287f795e2e6e84d35552a190e774125367241c3e99e955f4babf000600001600086602001518581518110614574576145746153ae565b6020026020010151600001518152602001908152602001600020548560000151670de0b6b3a76400006136c8565b9050836020015182815181106145ba576145ba6153ae565b60200260200101516020015181101561465557836020015182815181106145e3576145e36153ae565b60200260200101516000015184602001518381518110614605576146056153ae565b60209081029190910181015101516040517f8f56989d0000000000000000000000000000000000000000000000000000000081526004810192909252602482015260448101829052606401610dce565b5060010161452b565b600060028260038111156146745761467461590a565b61467e9190615939565b60ff166001149050919050565b6040805173ffffffffffffffffffffffffffffffffffffffff8581166024830152848116604483015260648083018590528351808403909101815260849092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32293ccc00000000000000000000000000000000000000000000000000000000179052612fde917f000000000000000000000000000000000000000000000000000000000000000016906108ea565b600063ffffffff82111561478c576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526020600482015260248101839052604401610dce565b5090565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052612fde9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614bfd565b73ffffffffffffffffffffffffffffffffffffffff8216614869576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610dce565b610e498260008361468b565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052611f3e91859182169063a9059cbb906064016147d2565b606060008267ffffffffffffffff8111156148d0576148d0614fc7565b6040519080825280602002602001820160405280156148f9578160200160208202803683370190505b50905060005b84518110156149475784818151811061491a5761491a6153ae565b6020026020010151828281518110614934576149346153ae565b60209081029190910101526001016148ff565b509392505050565b60008181527f82411e549329f2815579116a6c5e60bff72686c93ab5dba4d06242cfaf96890060209081526040918290208054835181840281018401909452808452606093928301828280156149c457602002820191906000526020600020905b8154815260200190600101908083116149b0575b50505050509050919050565b60606000825167ffffffffffffffff8111156149ee576149ee614fc7565b604051908082528060200260200182016040528015614a17578160200160208202803683370190505b5090506000805b8451811015614ac457848181518110614a3957614a396153ae565b6020026020010151600014158015614a725750614a7083868381518110614a6257614a626153ae565b602002602001015184614c93565b155b15614abc57848181518110614a8957614a896153ae565b6020026020010151838381518110614aa357614aa36153ae565b602090810291909101015281614ab881615411565b9250505b600101614a1e565b5060008167ffffffffffffffff811115614ae057614ae0614fc7565b604051908082528060200260200182016040528015614b09578160200160208202803683370190505b50905060005b82811015614b5657838181518110614b2957614b296153ae565b6020026020010151828281518110614b4357614b436153ae565b6020908102919091010152600101614b0f565b50949350505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561478c576040517f24775e0600000000000000000000000000000000000000000000000000000000815260048101839052602401610dce565b60008082121561478c576040517fa8ce443200000000000000000000000000000000000000000000000000000000815260048101839052602401610dce565b6000614c1f73ffffffffffffffffffffffffffffffffffffffff841683611b1e565b90508051600014158015614c44575080806020019051810190614c4291906156b9565b155b15611f3e576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610dce565b6000805b82811015614cd15783858281518110614cb257614cb26153ae565b602002602001015103614cc9576001915050610ace565b600101614c97565b506000949350505050565b60005b83811015614cf7578181015183820152602001614cdf565b50506000910152565b60008151808452614d18816020860160208601614cdc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610ace6020830184614d00565b600060208284031215614d6f57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461365d57600080fd5b60008060408385031215614dab57600080fd5b8235614db681614d76565b946020939093013593505050565b600080600060608486031215614dd957600080fd5b8335614de481614d76565b92506020840135614df481614d76565b929592945050506040919091013590565b600080600080600080600060e0888a031215614e2057600080fd5b873596506020880135614e3281614d76565b95506040880135614e4281614d76565b945060608801359350608088013560ff81168114614e5f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600060208284031215614e8e57600080fd5b8135610ace81614d76565b60008060408385031215614eac57600080fd5b823591506020830135614ebe81614d76565b809150509250929050565b600080600060608486031215614ede57600080fd5b833592506020840135614ef081614d76565b91506040840135614f0081614d76565b809150509250925092565b60008083601f840112614f1d57600080fd5b50813567ffffffffffffffff811115614f3557600080fd5b6020830191508360208260051b8501011115614f5057600080fd5b9250929050565b60008060208385031215614f6a57600080fd5b823567ffffffffffffffff811115614f8157600080fd5b614f8d85828601614f0b565b90969095509350505050565b60008060408385031215614fac57600080fd5b8235614fb781614d76565b91506020830135614ebe81614d76565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561501957615019614fc7565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561506657615066614fc7565b604052919050565b60006020828403121561508057600080fd5b815167ffffffffffffffff81111561509757600080fd5b8201601f810184136150a857600080fd5b805167ffffffffffffffff8111156150c2576150c2614fc7565b8060051b6150d26020820161501f565b918252602081840181019290810190878411156150ee57600080fd5b6020850192505b83831015610c9b57825167ffffffffffffffff81111561511457600080fd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561514857600080fd5b615150614ff6565b602082015161515e81614d76565b8152604082015167ffffffffffffffff81111561517a57600080fd5b60208184010192505089601f83011261519257600080fd5b815167ffffffffffffffff8111156151ac576151ac614fc7565b6151dd60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161501f565b8181528b60208386010111156151f257600080fd5b615203826020830160208701614cdc565b806020840152505080845250506020820191506020830192506150f5565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156152c5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff815116865260208101519050604060208701526152af6040870182614d00565b9550506020938401939190910190600101615249565b50929695505050505050565b600082516152e3818460208701614cdc565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610969576109696152ed565b600181811c9082168061534357607f821691505b60208210810361537c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80820180821115610969576109696152ed565b6000602082840312156153a757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126152e357600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615442576154426152ed565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261547e57600080fd5b83018035915067ffffffffffffffff82111561549957600080fd5b602001915036819003821315614f5057600080fd5b6001815b60018411156154e9578085048111156154cd576154cd6152ed565b60018416156154db57908102905b60019390931c9280026154b2565b935093915050565b60008261550057506001610969565b8161550d57506000610969565b8160018114615523576002811461552d57615549565b6001915050610969565b60ff84111561553e5761553e6152ed565b50506001821b610969565b5060208310610133831016604e8410600b841016171561556c575081810a610969565b6155977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846154ae565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156155c9576155c96152ed565b029392505050565b6000610ace60ff8416836154f1565b600080858511156155f057600080fd5b838611156155fd57600080fd5b5050820193919092039150565b80357fffffffff00000000000000000000000000000000000000000000000000000000811690600484101561317e577fffffffff00000000000000000000000000000000000000000000000000000000808560040360031b1b82161691505092915050565b8051801515811461567f57600080fd5b919050565b6000806040838503121561569757600080fd5b6156a08361566f565b9150602083015163ffffffff81168114614ebe57600080fd5b6000602082840312156156cb57600080fd5b610ace8261566f565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b60ff8181168382160190811115610969576109696152ed565b602080825282518282018190526000918401906040840190835b8181101561578f578351835260209384019390920191600101615771565b509095945050505050565b8082028115828204841417610969576109696152ed565b600080604083850312156157c457600080fd5b505080516020909101519092909150565b6000610ace83836154f1565b60ff8281168282160390811115610969576109696152ed565b808201828112600083128015821682158216171561581a5761581a6152ed565b505092915050565b6040808252835190820181905260009060208501906060840190835b8181101561585c57835183526020938401939092019160010161583e565b5050602093909301939093525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826158ad576158ad61586f565b500490565b818103600083128015838313168383128216171561317e5761317e6152ed565b60007f80000000000000000000000000000000000000000000000000000000000000008203615903576159036152ed565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060ff83168061594c5761594c61586f565b8060ff8416069150509291505056fea264697066735822122057388fb6ef9173eec8ba27e1d5db4f7c0fba3c44bb36baf05e59bb551691418f64736f6c634300081a00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000009838c0d15b439816d25d5fd1aebd259eeddb66b400000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000b600000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000384000000000000000000000000b68e30e31a68fe21c869c3746905105d6b04f3a5000000000000000000000000ebbaa8a48e3f37fc1d35baa38a8809f2f3e6648f000000000000000000000000ebbaa8a48e3f37fc1d35baa38a8809f2f3e6648f0000000000000000000000004d1734b5ff3967897500901b3e6e6b476d4fff5e000000000000000000000000f273ae429cf5860ba62949f4194b7a39a2a79a84ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002549504f52205553444320417262697472756d204f7074696d697a65722050696c6f74204d320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013697055534443667573696f6e50696c6f744d3200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000005c00000000000000000000000000000000000000000000000000000000000000660000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000007c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000890a69ef363c9c7bdd5e36eb95ceb569f63acbf6000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d0181a36b0566a8645b7eecff2148ade7ecf2be90000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001a996cb54bb95462040408c06122d45d6cdb609600000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000048f89d731c5e3b5bee8235162fc2c639ba62db7d000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000003000000000000000000000000fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000005e325eda8064b456f4781070c0738d849c824258000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e583100000000000000000000000000000000000000000000000000000000000000100000000000000000000000009339acd4e73c8a11109f77bc87221bdfc7b7a4fc000000000000000000000000b0b3dc1b27c6c8007c9b01a768d6717f6813fe9400000000000000000000000007cd27531ee9df28292b26eeba3f457609deae07000000000000000000000000b0fbf6b7d0586c0a5bc1c3b8a98773f4ed02c9830000000000000000000000004ae8640b3a6b71fa1a05372a59946e66beb05f9f0000000000000000000000002b83f05e463cbc34861b10cb020b6eb4740bd89000000000000000000000000028264e8b70902f6c55420eaf66aeee12b602302e000000000000000000000000ada9bf3c599db229601dd1220d0b3ccab6c7db8400000000000000000000000084c5ab008c66d664681698a9e4536d942b916f890000000000000000000000001da7f95e63f12169b3495e2b83d01d0d6592dd86000000000000000000000000ba503b6f2b95a4a47ee9884bbbcd80cace2d2eb300000000000000000000000075781ab6cdce9c505dbd0848f4ad8a97c68f53c1000000000000000000000000b052b0d983e493b4d40dec75a03d21b70b83c2ca000000000000000000000000b025cc5e73e2966e12e4d859360b51c1d0f45ea3000000000000000000000000d41501b46a68dea06a460fd79a7bcda9e3b92674000000000000000000000000859f5c9d5cb2800a9ff72c56d79323ea01cb30b9000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000010000000000000000000000004cb1c4774ba1b65802c68adb33de99abf8b212280000000000000000000000000000000000000000000000000000000000000002000000000000000000000000cf730baa5542dc7570907696271ba96019fcd10c0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000d347f4bb96531b01c8fab953cf8e920419193a8c0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000aa6c8db1da40f685e02564de92bc2276c12729f60000000000000000000000000000000000000000000000000000000000000005000000000000000000000000db26af00177bfae4439eb881b7742ef47eddfaf60000000000000000000000000000000000000000000000000000000000000006000000000000000000000000a99ab2d4709c9fc83779bd4b230e888dccaedaf600000000000000000000000000000000000000000000000000000000000000090000000000000000000000000f0f43b3559be3319a63082755ad05c158d3b011000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000043f3ca257b7e2d6bbe088b85ef2c2c57e2a3142c0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000f5f05a86e4fe84033940fc7faeea5e17c661494500000000000000000000000000000000000000000000000000000000000000070000000000000000000000001a047137f2d4dae60853f87dc13ae92c0db2c123000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000007ceae29f467db23210c6fdb95247355c87026ed00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000d9fd7d42848a97f946f42c62ec3150d24c0a3835