[ { "inputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "amplificationParameter", "type": "uint256" }, { "internalType": "string", "name": "version", "type": "string" } ], "internalType": "struct StablePool.NewPoolParams", "name": "params", "type": "tuple" }, { "internalType": "contract IVault", "name": "vault", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AmpUpdateAlreadyStarted", "type": "error" }, { "inputs": [], "name": "AmpUpdateDurationTooShort", "type": "error" }, { "inputs": [], "name": "AmpUpdateNotStarted", "type": "error" }, { "inputs": [], "name": "AmpUpdateRateTooFast", "type": "error" }, { "inputs": [], "name": "AmplificationFactorTooHigh", "type": "error" }, { "inputs": [], "name": "AmplificationFactorTooLow", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "SenderIsNotVault", "type": "error" }, { "inputs": [], "name": "SenderNotAllowed", "type": "error" }, { "inputs": [], "name": "StableComputeBalanceDidNotConverge", "type": "error" }, { "inputs": [], "name": "StableInvariantDidNotConverge", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [], "name": "ZeroDivision", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "startValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "name": "AmpUpdateStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "currentValue", "type": "uint256" } ], "name": "AmpUpdateStopped", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "balancesLiveScaled18", "type": "uint256[]" }, { "internalType": "uint256", "name": "tokenInIndex", "type": "uint256" }, { "internalType": "uint256", "name": "invariantRatio", "type": "uint256" } ], "name": "computeBalance", "outputs": [ { "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "balancesLiveScaled18", "type": "uint256[]" }, { "internalType": "enum Rounding", "name": "rounding", "type": "uint8" } ], "name": "computeInvariant", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "emitApproval", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "emitTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "selector", "type": "bytes4" } ], "name": "getActionId", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAggregateFeePercentages", "outputs": [ { "internalType": "uint256", "name": "aggregateSwapFeePercentage", "type": "uint256" }, { "internalType": "uint256", "name": "aggregateYieldFeePercentage", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAmplificationParameter", "outputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bool", "name": "isUpdating", "type": "bool" }, { "internalType": "uint256", "name": "precision", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAmplificationState", "outputs": [ { "components": [ { "internalType": "uint64", "name": "startValue", "type": "uint64" }, { "internalType": "uint64", "name": "endValue", "type": "uint64" }, { "internalType": "uint32", "name": "startTime", "type": "uint32" }, { "internalType": "uint32", "name": "endTime", "type": "uint32" } ], "internalType": "struct AmplificationState", "name": "amplificationState", "type": "tuple" }, { "internalType": "uint256", "name": "precision", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCurrentLiveBalances", "outputs": [ { "internalType": "uint256[]", "name": "balancesLiveScaled18", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMaximumInvariantRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getMaximumSwapFeePercentage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getMinimumInvariantRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getMinimumSwapFeePercentage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getStablePoolDynamicData", "outputs": [ { "components": [ { "internalType": "uint256[]", "name": "balancesLiveScaled18", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "tokenRates", "type": "uint256[]" }, { "internalType": "uint256", "name": "staticSwapFeePercentage", "type": "uint256" }, { "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "internalType": "uint256", "name": "bptRate", "type": "uint256" }, { "internalType": "uint256", "name": "amplificationParameter", "type": "uint256" }, { "internalType": "uint256", "name": "startValue", "type": "uint256" }, { "internalType": "uint256", "name": "endValue", "type": "uint256" }, { "internalType": "uint32", "name": "startTime", "type": "uint32" }, { "internalType": "uint32", "name": "endTime", "type": "uint32" }, { "internalType": "bool", "name": "isAmpUpdating", "type": "bool" }, { "internalType": "bool", "name": "isPoolInitialized", "type": "bool" }, { "internalType": "bool", "name": "isPoolPaused", "type": "bool" }, { "internalType": "bool", "name": "isPoolInRecoveryMode", "type": "bool" } ], "internalType": "struct StablePoolDynamicData", "name": "data", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getStablePoolImmutableData", "outputs": [ { "components": [ { "internalType": "contract IERC20[]", "name": "tokens", "type": "address[]" }, { "internalType": "uint256[]", "name": "decimalScalingFactors", "type": "uint256[]" }, { "internalType": "uint256", "name": "amplificationParameterPrecision", "type": "uint256" } ], "internalType": "struct StablePoolImmutableData", "name": "data", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getStaticSwapFeePercentage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTokenInfo", "outputs": [ { "internalType": "contract IERC20[]", "name": "tokens", "type": "address[]" }, { "components": [ { "internalType": "enum TokenType", "name": "tokenType", "type": "uint8" }, { "internalType": "contract IRateProvider", "name": "rateProvider", "type": "address" }, { "internalType": "bool", "name": "paysYieldFees", "type": "bool" } ], "internalType": "struct TokenInfo[]", "name": "tokenInfo", "type": "tuple[]" }, { "internalType": "uint256[]", "name": "balancesRaw", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "lastBalancesLiveScaled18", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTokens", "outputs": [ { "internalType": "contract IERC20[]", "name": "tokens", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getVault", "outputs": [ { "internalType": "contract IVault", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "incrementNonce", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "enum SwapKind", "name": "kind", "type": "uint8" }, { "internalType": "uint256", "name": "amountGivenScaled18", "type": "uint256" }, { "internalType": "uint256[]", "name": "balancesScaled18", "type": "uint256[]" }, { "internalType": "uint256", "name": "indexIn", "type": "uint256" }, { "internalType": "uint256", "name": "indexOut", "type": "uint256" }, { "internalType": "address", "name": "router", "type": "address" }, { "internalType": "bytes", "name": "userData", "type": "bytes" } ], "internalType": "struct PoolSwapParams", "name": "request", "type": "tuple" } ], "name": "onSwap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "rawEndValue", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "name": "startAmplificationParameterUpdate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stopAmplificationParameterUpdate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
6101e0806040523461082a576143e3803803809161001d828561082e565b8339810160408282031261082a5781516001600160401b03811161082a57820190608092838383031261082a57604051918483016001600160401b038111848210176106035760405283516001600160401b03811161082a5781610082918601610851565b835260208401516001600160401b03811161082a57816100a3918601610851565b60208401908152604080860151908501526060850151909490916001600160401b03831161082a576020926100d89201610851565b60608401819052910151916001600160a01b038316830361082a578051935160408051959086016001600160401b03811187821017610603576040526001865260208601603160f81b815261012c826108a6565b6101205261013987610a29565b6101405281516020830120968760e05251902095610100968088524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84526040830152606082015246898201523060a082015260a0815260c0810181811060018060401b038211176106035760405251902087523060c0526101608590528051906001600160401b0382116106035760035490600182811c92168015610820575b60208310146105e55781601f8493116107b2575b50602090601f831160011461072a575f9261071f575b50508160011b915f199060031b1c1916176003555b8051906001600160401b0382116106035760045490600182811c92168015610715575b60208310146105e55781601f8493116106aa575b50602090601f8311600114610622575f92610617575b50508160011b915f199060031b1c1916176004555b610180903382526101a0928484526101c0948552805160018060401b03811161060357600591825490600182811c921680156105f9575b60208310146105e55781601f849311610597575b50602090601f8311600114610533575f92610528575b50508160011b915f199060031b1c19161790555b60016040820151106105195761138860408201511161050a57604001516103e8908181029181830414901517156104f6576001600160401b0381116104df57600654906001600160401b03811663ffffffff42116104c7574280891b63ffffffff60801b16604093841b6fffffffffffffffff0000000000000000166001600160c01b03199095168317949094179390931760a09390931b63ffffffff60a01b1692909217600655519081527fa0d01593e47e69d07e0ccd87bece09411e07dd1ed40ca8f2e7af2976542a023390602090a1604051936138839586610b60873951856132b8015260a05185613384015260c05185613289015260e051856133070152518461332d0152610120518461146d015261014051846114960152610160518481816102d90152818161045b0152818161068f015281816109090152818161098401528181610a0301528181610afc01528181611187015281816113e1015281816117fb0152818161194601528181611ddc015281816120c40152818161231401528181612766015281816129c20152612fa301525183612c6b015251826130690152518181816107e001528181610d5b01528181610e1f0152818161108201526115ab0152f35b6306dfcc6560e41b5f5260206004524260245260445ffd5b6306dfcc6560e41b5f52604060045260245260445ffd5b634e487b7160e01b5f52601160045260245ffd5b6309b80d3960e41b5f5260045ffd5b63ab92332360e01b5f5260045ffd5b015190505f806102e9565b5f858152602081209350601f198516905b81811061057f5750908460019594939210610567575b505050811b0190556102fd565b01515f1960f88460031b161c191690555f808061055a565b92936020600181928786015181550195019301610544565b909150835f5260205f20601f8401851c810191602085106105db575b90601f8594939201861c01905b8181106105cd57506102d3565b5f81558493506001016105c0565b90915081906105b3565b634e487b7160e01b5f52602260045260245ffd5b91607f16916102bf565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610273565b60045f90815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91905b601f198416851061068f576001945083601f19811610610677575b505050811b01600455610288565b01515f1960f88460031b161c191690555f8080610669565b8181015183556020948501946001909301929091019061064e565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81016020851061070e575b90849392915b601f830160051c8201811061070057505061025d565b5f81558594506001016106ea565b50806106e4565b91607f1691610249565b015190505f80610211565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f1984168510610797576001945083601f1981161061077f575b505050811b01600355610226565b01515f1960f88460031b161c191690555f8080610771565b81810151835560209485019460019093019290910190610756565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c81019160208510610816575b90601f859493920160051c01905b81811061080857506101fb565b5f81558493506001016107fb565b90915081906107ed565b91607f16916101e7565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761060357604052565b81601f8201121561082a578051906001600160401b0382116106035760405192610885601f8401601f19166020018561082e565b8284526020838301011161082a57815f9260208093018386015e8301015290565b80516020908181101561091c5750601f8251116108de57808251920151908083106108d057501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b038211610603575f54926001938481811c91168015610a1f575b838210146105e557601f81116109ec575b5081601f841160011461098a57509282939183925f9461097f575b50501b915f199060031b1c1916175f5560ff90565b015192505f8061096a565b919083601f1981165f8052845f20945f905b888383106109d257505050106109ba575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f80806109ad565b85870151885590960195948501948793509081019061099c565b5f805284601f845f20920160051c820191601f860160051c015b828110610a1457505061094f565b5f8155018590610a06565b90607f169061093e565b805160209081811015610a535750601f8251116108de57808251920151908083106108d057501790565b9192916001600160401b0381116106035760019182548381811c91168015610b55575b828210146105e557601f8111610b22575b5080601f8311600114610ac25750819293945f92610ab7575b50505f19600383901b1c191690821b17905560ff90565b015190505f80610aa0565b90601f19831695845f52825f20925f905b888210610b0b5750508385969710610af3575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f8080610ae6565b808785968294968601518155019501930190610ad3565b835f5283601f835f20920160051c820191601f850160051c015b828110610b4a575050610a87565b5f8155018490610b3c565b90607f1690610a7656fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a7146123f45750806306fdde031461234b578063095ea7b31461227d57806316a0b3e0146121cb57806318160ddd146121b157806321da5e191461213257806323b872dd1461205357806323de665114611ff2578063273c1adf14611fd05780632f1a0bc914611c2d57806330adf81f14611bf2578063313ce56714611bd65780633644e51514611bbb57806354fd4d5014611b115780635687f2b814611aae5780635c1e6259146118f9578063627cdcb9146118d0578063654cf15d146118ad578063679aefce146118925780636daccffa1461186057806370a082311461178c57806372c98186146116565780637ecebe001461161157806381fa807c1461154e57806384b0196e14611457578063851c1bb3146114055780638d928af8146113b457806395d89b41146112b7578063984de9e8146111f8578063a9059cbb146110ef578063aa6ca80814611029578063abb1dc4414610dc4578063b156aa0a14610d02578063b677fa5614610cdf578063cbd4e28014610839578063ce20ece714610819578063d335b0cf14610785578063d505accf146104d8578063dd62ed3e146103dc5763eb0f24d6146101d6575f80fd5b346103a257806003193601126103a2576101ee612ff7565b6101f6612d0f565b156103b457807fa0d01593e47e69d07e0ccd87bece09411e07dd1ed40ca8f2e7af2976542a0233602061022985946131ec565b60065467ffffffffffffffff82169173ffffffff0000000000000000000000000000000061025642613231565b916fffffffffffffffff0000000000000000857fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffff00000000000000000000000000000000000000008660a01b169616179160401b16179160801b161717600655604051908152a173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166040519160208301526020825261030f82612513565b803b156103b05761038183929183926040519485809481937fc80882470000000000000000000000000000000000000000000000000000000083527f416d7055706461746553746f7070656400000000000000000000000000000000600484015260406024840152604483019061245c565b03925af180156103a5576103925750f35b61039b906124e3565b6103a25780f35b80fd5b6040513d84823e3d90fd5b5050fd5b6004827f4673a675000000000000000000000000000000000000000000000000000000008152fd5b50346103a25760406003193601126103a2576103f6612481565b9060206104016124a4565b92606473ffffffffffffffffffffffffffffffffffffffff91828060405197889586947f927da1050000000000000000000000000000000000000000000000000000000086523060048701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156104cc5790610495575b602090604051908152f35b506020813d6020116104c4575b816104af6020938361252f565b810103126104c0576020905161048a565b5f80fd5b3d91506104a2565b604051903d90823e3d90fd5b50346103a25760e06003193601126103a2576104f2612481565b6104fa6124a4565b90604435916064359160843560ff8116810361078157834211610755576105488273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b9060405160208101917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9835273ffffffffffffffffffffffffffffffffffffffff9687861694856040850152888816606085015289608085015260a084015260c083015260c0825260e082019082821067ffffffffffffffff83111761072857879361062b93610622936040525190206105e0613272565b90604051917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220613713565b909291926137a2565b168181036106fa576040517fe1f21c6700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015285166024820152604481018790528790602081606481857f00000000000000000000000000000000000000000000000000000000000000008c165af180156103a5576106c0575080f35b6020813d6020116106f2575b816106d96020938361252f565b810103126106ee576106ea90612710565b5080f35b5080fd5b3d91506106cc565b7f4b800e46000000000000000000000000000000000000000000000000000000008752600452602452604485fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b602486857f62791302000000000000000000000000000000000000000000000000000000008252600452fd5b8580fd5b50346103a257806003193601126103a257604051907fb45090f900000000000000000000000000000000000000000000000000000000825230600483015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156104cc579061049557602090604051908152f35b50346103a257806003193601126103a257602060405164e8d4a510008152f35b50346103a257806003193601126103a2576040516101c0810181811067ffffffffffffffff8211176107285760405260608152606060208201528160408201528160608201528160808201528160a08201528160c08201528160e08201528161010082015281610120820152816101408201528161016082015281610180820152816101a08201526040517f535cfd8a000000000000000000000000000000000000000000000000000000008152306004820152828160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c5c578391610cbd575b5081526040517f7e361bde000000000000000000000000000000000000000000000000000000008152306004820152828160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c5c578391610c99575b5060208201526040517fb45090f900000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c5c578391610c67575b506040820152610a4161271d565b6060820152610a4e612979565b6080820152610a5b612d0f565b151561014083015260a082015263ffffffff6060610a776127c8565b67ffffffffffffffff81511660c085015267ffffffffffffffff60208201511660e0850152826040820151166101008501520151166101208201526040517ff29486a10000000000000000000000000000000000000000000000000000000081523060048201526101a08160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c5c57610120929391610c2b575b5060e081015115156101608401526101008101511515610180840152015115156101a08201526040518091602082526101a0610b93610b7d83516101c060208701526101e086019061260c565b6020840151601f1986830301604087015261260c565b916040810151606085015260608101516080850152608081015160a085015260a081015160c085015260c081015160e085015260e081015161010085015263ffffffff6101008201511661012085015263ffffffff6101208201511661014085015261014081015115156101608501526101608101511515610180850152610180810151151582850152015115156101c08301520390f35b610c4f91506101a03d6101a011610c55575b610c47818361252f565b810190612b25565b5f610b30565b503d610c3d565b6040513d85823e3d90fd5b90506020813d602011610c91575b81610c826020938361252f565b810103126104c057515f610a33565b3d9150610c75565b610cb591503d8085833e610cad818361252f565b810190612935565b90505f6109b4565b610cd991503d8085833e610cd1818361252f565b810190612cb2565b5f610939565b50346103a257806003193601126103a2576020604051670853a0d2313c00008152f35b50346103a257806003193601126103a2576040517f535cfd8a000000000000000000000000000000000000000000000000000000008152306004820152818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156103a55782610da59392610da9575b505060405191829160208352602083019061260c565b0390f35b610dbd92503d8091833e610cd1818361252f565b5f80610d8f565b50346103a257806003193601126103a25773ffffffffffffffffffffffffffffffffffffffff906040517f67e0e0760000000000000000000000000000000000000000000000000000000081523060048201528181602481867f0000000000000000000000000000000000000000000000000000000000000000165afa9081156103a55782809481928294610eec575b50610e6a6040519560808752608087019061263f565b9060209086830382880152818089519485815201980193905b838210610eb0578780610da589610ea28d8b858203604087015261260c565b90838203606085015261260c565b909192939783606060019260408c518051610eca81612688565b8352808501518716858401520151151560408201520199019493920190610e83565b955092509250503d8083853e610f02818561252f565b83016080848203126110255783519267ffffffffffffffff938481116106ee5782610f2e91870161282d565b9160209485870151818111610fc657870182601f82011215610fc657805190610f5682612552565b97610f64604051998a61252f565b82895280890181606080950284010192868411611021578201905b838210610fca5750505050506040870151818111610fc65782610fa39189016128d4565b966060810151918211610fc657610fbb9291016128d4565b91939491925f610e54565b8380fd5b848288031261102157604051610fdf816124f7565b8251600281101561101d578152838301518b8116810361101d57848201528591849161100d60408601612710565b6040820152815201910190610f7f565b8980fd5b8780fd5b8280fd5b50346103a257806003193601126103a2576040517fca4f2803000000000000000000000000000000000000000000000000000000008152306004820152818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156103a55782610da593926110cc575b505060405191829160208352602083019061263f565b6110e892503d8091833e6110e0818361252f565b8101906128ab565b5f806110b6565b50346103a25760406003193601126103a25761116d602061110e612481565b6040517fbeabacc800000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248083019190915235604482015291829081906064820190565b03818573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156103a5576111bf575b602060405160018152f35b6020813d6020116111f0575b816111d86020938361252f565b810103126106ee576111ea9150612710565b5f6111b4565b3d91506111cb565b50346103a25760406003193601126103a25760043567ffffffffffffffff81116106ee5761122a90369060040161256a565b6024359160028310156103a2575061124a90611244612d0f565b506133aa565b908161125c575b602082604051908152f35b80611268600192612688565b03611277576020905b90611251565b6001810180911161128a57602090611271565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b50346103a257806003193601126103a2576040516004545f826112d9836126bf565b91828252602093600190856001821691825f1461137657505060011461131b575b506113079250038361252f565b610da560405192828493845283019061245c565b84915060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b905f915b85831061135e5750506113079350820101856112fa565b80548389018501528794508693909201918101611347565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168582015261130795151560051b85010192508791506112fa9050565b50346103a257806003193601126103a257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346103a25760206003193601126103a257600435907fffffffff00000000000000000000000000000000000000000000000000000000821682036103a257602061144f83612c40565b604051908152f35b50346103a257806003193601126103a2576114917f0000000000000000000000000000000000000000000000000000000000000000613523565b6114ba7f0000000000000000000000000000000000000000000000000000000000000000613655565b60405192602084019380851067ffffffffffffffff8611176107285761152f610da593611521966040528383526040519687967f0f00000000000000000000000000000000000000000000000000000000000000885260e0602089015260e088019061245c565b90868203604088015261245c565b9146606086015230608086015260a085015283820360c085015261260c565b50346103a257806003193601126103a2576040517ff29486a10000000000000000000000000000000000000000000000000000000081523060048201526101a090818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c5c57604093926115f4575b505060608282015191015182519182526020820152f35b61160a9250803d10610c5557610c47818361252f565b5f806115dd565b50346103a25760206003193601126103a257604060209173ffffffffffffffffffffffffffffffffffffffff611645612481565b168152600283522054604051908152f35b50346103a25760206003198181360112611025576004359067ffffffffffffffff908183116117885760e0908336030112610fc6576040519160e083018381108382111761072857604052806004013560028110156107815783526024810135848401526044810135828111610781576116d6906004369184010161256a565b6040840152606481013560608401526084810135608084015260a481013573ffffffffffffffffffffffffffffffffffffffff811681036104c05760a084015260c48101359082821161078157019036602383011215611788576004820135908111610728576040519161175385601f19601f850116018461252f565b8183523660248383010111610781579381819692602461144f9701838601378301015260c0820152611783612f8c565b6129f5565b8480fd5b50346103a257602090816003193601126103a2576044826117ab612481565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff918216602482015292839182907f0000000000000000000000000000000000000000000000000000000000000000165afa9182156104cc5791611833575b50604051908152f35b90508181813d8311611859575b61184a818361252f565b810103126104c057515f61182a565b503d611840565b50346103a257806003193601126103a257606061187b612d0f565b604051918252151560208201526103e86040820152f35b50346103a257806003193601126103a257602061144f612979565b50346103a257806003193601126103a257602060405167016345785d8a00008152f35b50346103a257806003193601126103a257335f9081526002602052604090208054600101905580f35b50346103a257806003193601126103a25760405190611917826124f7565b6060825260209182810160608152604082019183835273ffffffffffffffffffffffffffffffffffffffff94857f0000000000000000000000000000000000000000000000000000000000000000166040517fca4f28030000000000000000000000000000000000000000000000000000000081523060048201528681602481855afa908115611aa3579187916024938391611a89575b508552604051928380927f7e361bde0000000000000000000000000000000000000000000000000000000082523060048301525afa908115611a7e578691611a65575b508395929195526103e88452604051948086526080860191519660608288015287518093528160a08801980193905b838210611a4c57878088611a418c8a51601f1985830301604086015261260c565b905160608301520390f35b8451811689529782019793820193600190910190611a20565b611a7991503d8088833e610cad818361252f565b6119f1565b6040513d88823e3d90fd5b611a9d91503d8085833e6110e0818361252f565b5f6119ae565b6040513d89823e3d90fd5b50346103a25760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925611ae0366125ca565b92919390611aec612f8c565b73ffffffffffffffffffffffffffffffffffffffff809160405195865216941692a380f35b50346103a257806003193601126103a2576040516005545f82611b33836126bf565b91828252602093600190856001821691825f14611376575050600114611b6057506113079250038361252f565b84915060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f915b858310611ba35750506113079350820101856112fa565b80548389018501528794508693909201918101611b8c565b50346103a257806003193601126103a257602061144f613272565b50346103a257806003193601126103a257602060405160128152f35b50346103a257806003193601126103a25760206040517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b50346104c05760406003193601126104c057600435602435611c4d612ff7565b60018210611fa8576113888211611f8057611c68428261280d565b62015180808210611f5857611c7b612d0f565b929092611f30576103e89485810295818704148115171561128a5783861115611f0a576305265c000291858304148515171561128a57600291611cc1611cc7928561281a565b9061318f565b11611ee257611cd8611cde916131ec565b926131ec565b611cf0611cea42613231565b92613231565b67ffffffffffffffff809416916006548582169473ffffffff0000000000000000000000000000000063ffffffff936fffffffffffffffff0000000000000000877fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffff0000000000000000000000000000000000000000888716988a169960a01b169616179160401b16179160801b1617176006557f1835882ee7a34ac194f717a35e09bb1d24c82a3b9d854ab6c9749525b714cdf26080604051858152866020820152836040820152846060820152a173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016936040519360208501526040840152606083015260808201526080815260a0810192818410908411176107285782604052813b156104c0575f9183837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082947fc80882470000000000000000000000000000000000000000000000000000000084527f416d70557064617465537461727465640000000000000000000000000000000060a4820152604060c4820152611eb860e482018261245c565b0301925af18015611ed757611ecb575080f35b611ed591506124e3565b005b6040513d5f823e3d90fd5b7f1c708b92000000000000000000000000000000000000000000000000000000005f5260045ffd5b5081830291838304148315171561128a57600291611cc1611f2b928761281a565b611cc7565b7f2f301e7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd6b022a000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f9b80d390000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fab923323000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104c0575f6003193601126104c0576020604051674563918244f400008152f35b346104c05760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612023366125ca565b9291939061202f612f8c565b73ffffffffffffffffffffffffffffffffffffffff809160405195865216941692a3005b346104c05760846020612065366125ca565b6040517f15dacbea00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff93841660248201529183166044830152606482015292839182905f907f0000000000000000000000000000000000000000000000000000000000000000165af18015611ed7576120fb57602060405160018152f35b6020813d60201161212a575b816121146020938361252f565b810103126104c05761212590612710565b6111b4565b3d9150612107565b346104c0575f6003193601126104c0575f6060604051612151816124c7565b828152826020820152826040820152015260a061216c6127c8565b6040519067ffffffffffffffff8082511683526020820151166020830152606060408201519163ffffffff809316604085015201511660608201526103e86080820152f35b346104c0575f6003193601126104c057602061144f61271d565b346104c05760606003193601126104c05760043567ffffffffffffffff81116104c0576121fc90369060040161256a565b612204612d0f565b509061221281611244612d0f565b8061226b575b9060209261222c61144f936044359061281a565b91602435926001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150291612dd7565b906001820180921161128a5790612218565b346104c05760406003193601126104c0576122fa602061229b612481565b6040517fe1f21c6700000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248083019190915235604482015291829081906064820190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015611ed7576120fb57602060405160018152f35b346104c0575f6003193601126104c0576040516003545f8261236c836126bf565b91828252602093600190856001821691825f1461137657505060011461239957506113079250038361252f565b84915060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905f915b8583106123dc5750506113079350820101856112fa565b805483890185015287945086939092019181016123c5565b346104c05760206003193601126104c057600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036104c0577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036104c057565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036104c057565b6080810190811067ffffffffffffffff82111761072857604052565b67ffffffffffffffff811161072857604052565b6060810190811067ffffffffffffffff82111761072857604052565b6040810190811067ffffffffffffffff82111761072857604052565b90601f601f19910116810190811067ffffffffffffffff82111761072857604052565b67ffffffffffffffff81116107285760051b60200190565b9080601f830112156104c057602090823561258481612552565b93612592604051958661252f565b81855260208086019260051b8201019283116104c057602001905b8282106125bb575050505090565b813581529083019083016125ad565b60031960609101126104c05773ffffffffffffffffffffffffffffffffffffffff9060043582811681036104c0579160243590811681036104c0579060443590565b9081518082526020808093019301915f5b82811061262b575050505090565b83518552938101939281019260010161261d565b9081518082526020808093019301915f5b82811061265e575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101612650565b6002111561269257565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90600182811c92168015612706575b60208310146126d957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916126ce565b519081151582036104c057565b6040517fe4dc2aa400000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611ed7575f91612799575090565b90506020813d6020116127c0575b816127b46020938361252f565b810103126104c0575190565b3d91506127a7565b604051906127d5826124c7565b81606060065467ffffffffffffffff80821684528160401c16602084015263ffffffff90818160801c16604085015260a01c16910152565b9190820391821161128a57565b8181029291811591840414171561128a57565b9080601f830112156104c05781519060209161284881612552565b93612856604051958661252f565b81855260208086019260051b8201019283116104c057602001905b82821061287f575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036104c0578152908301908301612871565b906020828203126104c057815167ffffffffffffffff81116104c0576128d1920161282d565b90565b9080601f830112156104c0578151906020916128ef81612552565b936128fd604051958661252f565b81855260208086019260051b8201019283116104c057602001905b828210612926575050505090565b81518152908301908301612918565b9190916040818403126104c05780519267ffffffffffffffff938481116104c057816129629184016128d4565b9360208301519081116104c0576128d192016128d4565b6040517f4f037ee700000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611ed7575f91612799575090565b6040810190612a078251611244612d0f565b9081612b20575b612a16612d0f565b50918151612a2381612688565b612a2c81612688565b612ac657612a9391602091612a8d612a79612a99975193606081015193856080830151978893015199612a698b612a638985612dc3565b51612ca5565b612a738884612dc3565b52612dd7565b95612a848385612dc3565b51039183612dc3565b52612dc3565b5161280d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811161128a5790565b612b0b91612b12945190612a8d612af760608301518095856020608087015196015199612a698b612a938985612dc3565b95612b028385612dc3565b51019183612dc3565b519061280d565b6001810180911161128a5790565b612a0e565b6101a0918190038281126104c05760405192610140928385019285841067ffffffffffffffff8511176107285760809084604052126104c057612b67836124c7565b612b7081612710565b8352612b7e60208201612710565b926101609384870152612b9360408301612710565b926101809384880152612ba860608401612710565b9087015285526080810151602086015260a0810151604086015260c0810151606086015260e081015164ffffffffff811681036104c05760808601526101008082015163ffffffff811681036104c057612c3994612c2f9160a0890152612c2361012097612c17898701612710565b60c08b01528501612710565b60e08901528301612710565b9086015201612710565b9082015290565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f0000000000000000000000000000000000000000000000000000000000000000845216604082015260248152612c9f816124f7565b51902090565b9190820180921161128a57565b906020828203126104c057815167ffffffffffffffff81116104c0576128d192016128d4565b8115612ce2570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b612d176127c8565b67ffffffffffffffff80825116906020830151169163ffffffff60608160408401511692015116908142105f14612d81576001938380821115612d695782612d659403924203910302612cd8565b0191565b5081612d7c930391420390840302612cd8565b900391565b5050505f9091565b805115612d965760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051821015612d965760209160051b010190565b92919092612de78451809261281a565b90612df185612d89565b51612e0582612dff88612d89565b5161281a565b916001905b8588828410612f4a57612e26949350612b0b9250889150612dc3565b90612e31848061281a565b956103e8958688029088820488148915171561128a57612e5b612e6192611cc1612e68968961281a565b92612dc3565b519061281a565b9380840290848204148415171561128a57612e94612e9a92612e8e612ea4958894612cd8565b90612ca5565b95612ca5565b611cc18584612ca5565b5f5b60ff8110612ed6577fdcbda05c000000000000000000000000000000000000000000000000000000005f5260045ffd5b81612eea85612ee5838061281a565b612ca5565b908060011b908082046002149015171561128a57600191611cc186612f128a612f1795612ca5565b61280d565b928381811115612f3a57031115612f32576001905b01612ea6565b509250505090565b90031115612f3257600190612f2c565b612f8491612f6d84612f68879899612e6160019899612f7297612dc3565b61281a565b612cd8565b94612f7d858b612dc3565b5190612ca5565b920190612e0a565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303612fcb57565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b6130237fffffffff000000000000000000000000000000000000000000000000000000005f3516612c40565b73ffffffffffffffffffffffffffffffffffffffff6040517faaabadc50000000000000000000000000000000000000000000000000000000081526020928382600481867f0000000000000000000000000000000000000000000000000000000000000000165afa908115611ed75784925f92613153575b5060649060405194859384927f9be2a8840000000000000000000000000000000000000000000000000000000084526004840152336024840152306044840152165afa918215611ed7575f9261311d575b5050156130f557565b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b90809250813d831161314c575b613134818361252f565b810103126104c05761314590612710565b5f806130ec565b503d61312a565b8092508391933d8311613188575b61316b818361252f565b810103126104c057519082821682036104c057839190606461309b565b503d613161565b9080156131c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201046001019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b67ffffffffffffffff90818111613201571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52604060045260245260445ffd5b63ffffffff90818111613242571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52602060045260245260445ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480613381575b156132da577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176107285760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146132b1565b90915f9183515f5b81811061350b575083156135025792906133cd84839261281a565b915f907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18840196848811916001986001890194858a11965b60ff8210613435577f010ca320000000000000000000000000000000000000000000000000000000005f5260045ffd5b805f5b8d8d82106134d45750509081878661346c8f95612f688f9897612e8e839a6134646103e897889261281a565b04918961281a565b9161128a5761347c8c938861281a565b049161128a576134958f9392612e8e61349b948d61281a565b90612cd8565b9283818111156134c5570311156134b6578b905b0190613405565b50985050505050505050915090565b900311156134b6578b906134af565b909691939c926134e7856134f59261281a565b61349585612dff8b87612dc3565b96019b929095919b613438565b50509150505f90565b9361351c600191612f7d8789612dc3565b94016133b2565b60ff81146135775760ff811690601f821161354f576040519161354583612513565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f5491613589836126bf565b8083529260209060019081811690811561361257506001146135b4575b50506128d19250038261252f565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b8284106135fa57506128d19450505081016020015f806135a6565b855487850183015294850194869450928101926135df565b9050602093506128d19592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f806135a6565b60ff81146136775760ff811690601f821161354f576040519161354583612513565b506040515f8160019160015461368c816126bf565b808452936020916001811690811561361257506001146136b45750506128d19250038261252f565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b8284106136fb57506128d19450505081016020015f806135a6565b855487850183015294850194869450928101926136e0565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613797579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611ed7575f5173ffffffffffffffffffffffffffffffffffffffff81161561378d57905f905f90565b505f906001905f90565b5050505f9160039190565b600481101561269257806137b4575050565b600181036137e4577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361381857507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146138225750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffdfea26469706673582212205f0545cd780f72372cb3a41777cfaea685cd547404869d46a606879390daf1da64736f6c634300081a00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000ba1333333333a1ba1108e8412f11850a5c319ba9000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001742616c616e636572204161766520555344432d55534454000000000000000000000000000000000000000000000000000000000000000000000000000000000e4161766520555344432d5553445400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000487b226e616d65223a22537461626c65506f6f6c222c2276657273696f6e223a312c226465706c6f796d656e74223a2232303234313230352d76332d737461626c652d706f6f6c227d000000000000000000000000000000000000000000000000