11 txs
11 calls
constructor
constructor(address _tokenStake, address _tokenRecompensa, uint256 _tiempoMinimo, uint256 _cantidadMinima, address[] _propietarios)
functions
calcularIntereses
viewfunction calcularIntereses(address _user, uint256 _indice) view returns (uint256)
calcularTasa
viewfunction calcularTasa() view returns (uint256)
cantidadStakes
viewfunction cantidadStakes(address _user) view returns (uint256)
confirmadoresPropuesta
viewfunction confirmadoresPropuesta(uint256, address) view returns (bool)
contadorPropuestas
viewfunction contadorPropuestas() view returns (uint256)
esPropietario
viewfunction esPropietario(address) view returns (bool)
historicoTasas
viewfunction historicoTasas(uint256) view returns (uint256 timestamp, uint256 tasa)
MIN_PROPIETARIOS
viewfunction MIN_PROPIETARIOS() view returns (uint8)
nonces
viewfunction nonces(address, uint256) view returns (bool)
noncesInicio
viewfunction noncesInicio(address, uint256) view returns (bool)
obtenerStake
viewfunction obtenerStake(address _user, uint256 _indice) view returns (tuple)
propietarios
viewfunction propietarios(uint256) view returns (address)
propuestas
viewfunction propuestas(uint256) view returns (address creador, uint8 tipo, address direccionAfectada, uint256 valorNumerico, uint8 confirmaciones, uint40 timestamp, bool ejecutada, address destino)
tasaActual
viewfunction tasaActual() view returns (uint256)
depositarRecompensas
nonpayablefunction depositarRecompensas(uint256 _cantidad)
ejecutarPropuesta
nonpayablefunction ejecutarPropuesta(uint256 _id)
finalizarMiStake
nonpayablefunction finalizarMiStake(uint256 _indice)
finalizarStakePorFirma
nonpayablefunction finalizarStakePorFirma(address _user, uint256 _indice, uint256 _nonce, bytes _signature)
iniciarStake
nonpayablefunction iniciarStake(uint256 _cantidad)
iniciarStakePorRelayer
nonpayablefunction iniciarStakePorRelayer(address _user, uint256 _cantidad, uint256 _deadline, uint8 v_permit, bytes32 r_permit, bytes32 s_permit, uint256 _nonce, bytes _firmaStake)
limpiarPropuesta
nonpayablefunction limpiarPropuesta(uint256 _id)
proponerAgregarPropietario
nonpayablefunction proponerAgregarPropietario(address _nuevoPropietario)
proponerCambiarPlazoMinimo
nonpayablefunction proponerCambiarPlazoMinimo(uint256 _nuevoPlazo)
proponerCambiarTokenRecompensa
nonpayablefunction proponerCambiarTokenRecompensa(address _nuevoToken)
proponerCambiarTokenStake
nonpayablefunction proponerCambiarTokenStake(address _nuevoToken)
proponerEliminarPropietario
nonpayablefunction proponerEliminarPropietario(address _propietario)
proponerFinalizarStakeSeguro
nonpayablefunction proponerFinalizarStakeSeguro(address _user, uint256 _indice, address _destino)
proponerRetirarRecompensas
nonpayablefunction proponerRetirarRecompensas(uint256 _monto, address _destino)
proponerRetirarStakeTokens
nonpayablefunction proponerRetirarStakeTokens(uint256 _monto, address _destino)
votarPropuesta
nonpayablefunction votarPropuesta(uint256 _id)
events
PlazoMinimoCambiado
event PlazoMinimoCambiado(uint256 nuevoPlazo)
PropietarioAgregado
event PropietarioAgregado(address indexed nuevoPropietario)
PropietarioEliminado
event PropietarioEliminado(address indexed propietarioEliminado)
PropuestaCaducada
event PropuestaCaducada(uint256 indexed id)
PropuestaConfirmada
event PropuestaConfirmada(uint256 indexed id, address indexed votante)
PropuestaCreada
event PropuestaCreada(uint256 indexed id, address indexed creador, uint8 tipo, address direccionAfectada, uint256 valorNumerico)
PropuestaEjecutada
event PropuestaEjecutada(uint256 indexed id, address indexed ejecutor)
RecompensasDepositadas
event RecompensasDepositadas(uint256 cantidad)
RecompensasRetiradas
event RecompensasRetiradas(uint256 cantidad, address destino)
StakeFinalizado
event StakeFinalizado(address indexed usuario, address destino, uint256 cantidad, uint256 intereses, uint256 indice)
StakeIniciado
event StakeIniciado(address indexed usuario, uint256 cantidad, uint256 indice)
StakeTokensRetirados
event StakeTokensRetirados(uint256 cantidad, address destino)
TasaActualizada
event TasaActualizada(uint256 tasa, uint256 timestamp)
TokenRecompensaCambiado
event TokenRecompensaCambiado(address nuevoTokenRecompensa)
TokenStakeCambiado
event TokenStakeCambiado(address nuevoTokenStake)
errors
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405234801561000f575f5ffd5b5060405161630a38038061630a8339818101604052810190610031919061086b565b600360ff1681511015610079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161007090610958565b60405180910390fd5b5f5f90505b81518160ff16101561026a575f828260ff16815181106100a1576100a0610976565b5b602002602001015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610119576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610110906109ed565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156101a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019a90610a55565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050808061026290610aac565b91505061007e565b508460035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260058190555081600681905550600160028190555061030f6103ad60201b60201c565b60078190555060086040518060400160405280428152602001600754815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f01556020820151816001015550507f3cb6685fcb7249092411f19ff77b057c9d3a78ef837ca851d8abeb622c4808946007544260405161039b929190610ae3565b60405180910390a15050505050610dc9565b5f5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104099190610b19565b602060405180830381865afa158015610424573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104489190610b32565b90505f810361045a575f91505061067a565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104b59190610b19565b602060405180830381865afa1580156104d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f49190610b32565b90505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610561573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105859190610b87565b90505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105f2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106169190610b87565b90505f81600a6106269190610ce1565b856106319190610d2b565b83600a61063e9190610ce1565b60648661064b9190610d2b565b6106559190610d2b565b61065f9190610d99565b90506064811161066f5780610672565b60645b955050505050505b90565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b78261068e565b9050919050565b6106c7816106ad565b81146106d1575f5ffd5b50565b5f815190506106e2816106be565b92915050565b5f819050919050565b6106fa816106e8565b8114610704575f5ffd5b50565b5f81519050610715816106f1565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6107658261071f565b810181811067ffffffffffffffff821117156107845761078361072f565b5b80604052505050565b5f61079661067d565b90506107a2828261075c565b919050565b5f67ffffffffffffffff8211156107c1576107c061072f565b5b602082029050602081019050919050565b5f5ffd5b5f6107e86107e3846107a7565b61078d565b9050808382526020820190506020840283018581111561080b5761080a6107d2565b5b835b81811015610834578061082088826106d4565b84526020840193505060208101905061080d565b5050509392505050565b5f82601f8301126108525761085161071b565b5b81516108628482602086016107d6565b91505092915050565b5f5f5f5f5f60a0868803121561088457610883610686565b5b5f610891888289016106d4565b95505060206108a2888289016106d4565b94505060406108b388828901610707565b93505060606108c488828901610707565b925050608086015167ffffffffffffffff8111156108e5576108e461068a565b5b6108f18882890161083e565b9150509295509295909350565b5f82825260208201905092915050565b7f4d696e696d6f20332070726f706965746172696f7300000000000000000000005f82015250565b5f6109426015836108fe565b915061094d8261090e565b602082019050919050565b5f6020820190508181035f83015261096f81610936565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f446972656363696f6e20696e76616c69646100000000000000000000000000005f82015250565b5f6109d76012836108fe565b91506109e2826109a3565b602082019050919050565b5f6020820190508181035f830152610a04816109cb565b9050919050565b7f50726f706965746172696f206475706c696361646f00000000000000000000005f82015250565b5f610a3f6015836108fe565b9150610a4a82610a0b565b602082019050919050565b5f6020820190508181035f830152610a6c81610a33565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff82169050919050565b5f610ab682610aa0565b915060ff8203610ac957610ac8610a73565b5b600182019050919050565b610add816106e8565b82525050565b5f604082019050610af65f830185610ad4565b610b036020830184610ad4565b9392505050565b610b13816106ad565b82525050565b5f602082019050610b2c5f830184610b0a565b92915050565b5f60208284031215610b4757610b46610686565b5b5f610b5484828501610707565b91505092915050565b610b6681610aa0565b8114610b70575f5ffd5b50565b5f81519050610b8181610b5d565b92915050565b5f60208284031215610b9c57610b9b610686565b5b5f610ba984828501610b73565b91505092915050565b5f8160011c9050919050565b5f5f8291508390505b6001851115610c0757808604811115610be357610be2610a73565b5b6001851615610bf25780820291505b8081029050610c0085610bb2565b9450610bc7565b94509492505050565b5f82610c1f5760019050610cda565b81610c2c575f9050610cda565b8160018114610c425760028114610c4c57610c7b565b6001915050610cda565b60ff841115610c5e57610c5d610a73565b5b8360020a915084821115610c7557610c74610a73565b5b50610cda565b5060208310610133831016604e8410600b8410161715610cb05782820a905083811115610cab57610caa610a73565b5b610cda565b610cbd8484846001610bbe565b92509050818404811115610cd457610cd3610a73565b5b81810290505b9392505050565b5f610ceb826106e8565b9150610cf683610aa0565b9250610d237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610c10565b905092915050565b5f610d35826106e8565b9150610d40836106e8565b9250828202610d4e816106e8565b91508282048414831517610d6557610d64610a73565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610da3826106e8565b9150610dae836106e8565b925082610dbe57610dbd610d6c565b5b828204905092915050565b61553480610dd65f395ff3fe608060405234801561000f575f5ffd5b50600436106101d8575f3560e01c8063502e1a1611610102578063be8df5b6116100a0578063e282a8051161006f578063e282a8051461058a578063eee31e88146105a8578063f82dabca146105c4578063fff21093146105e0576101d8565b8063be8df5b6146104f2578063bf2b5e7514610522578063c5e89c771461053e578063d368d78c1461056e576101d8565b80636097e216116100dc5780636097e21614610453578063776f4d761461048a57806393c45366146104a6578063ad35605b146104d6576101d8565b8063502e1a16146103e957806350b759b41461041957806354b2638c14610437576101d8565b8063253016181161017a5780633a094319116101495780633a094319146103775780633ff45e8e146103935780634caef50a146103af5780634ed6200b146103cd576101d8565b806325301618146102de57806326d14a38146102fa5780632b717c0b1461031657806335af6ae814610347576101d8565b806317b51219116101b657806317b51219146102325780631e2e5c51146102625780631f0adc321461027e5780632429183d146102ae576101d8565b80630668192d146101dc5780630fb0df87146101f8578063129dd3e814610216575b5f5ffd5b6101f660048036038101906101f19190613dbb565b6105fc565b005b610200610695565b60405161020d9190613e01565b60405180910390f35b610230600480360381019061022b9190613e4d565b61069a565b005b61024c60048036038101906102479190613e8b565b610776565b6040516102599190613f45565b60405180910390f35b61027c60048036038101906102779190613f5e565b6108a5565b005b61029860048036038101906102939190613dbb565b610aa8565b6040516102a59190613fbd565b60405180910390f35b6102c860048036038101906102c39190613e4d565b610af1565b6040516102d59190613fe5565b60405180910390f35b6102f860048036038101906102f39190613ffe565b610b1b565b005b610314600480360381019061030f9190613dbb565b610d6b565b005b610330600480360381019061032b9190613ffe565b610efc565b60405161033e929190614029565b60405180910390f35b610361600480360381019061035c9190613e8b565b610f2b565b60405161036e9190613fe5565b60405180910390f35b610391600480360381019061038c919061418c565b610f55565b005b6103ad60048036038101906103a89190613ffe565b61120d565b005b6103b761152a565b6040516103c49190613fbd565b60405180910390f35b6103e760048036038101906103e29190613ffe565b611530565b005b61040360048036038101906103fe9190613e8b565b6115c0565b6040516104109190613fe5565b60405180910390f35b6104216115ea565b60405161042e9190613fbd565b60405180910390f35b610451600480360381019061044c9190613ffe565b6118ba565b005b61046d60048036038101906104689190613ffe565b611b28565b60405161048198979695949392919061423a565b60405180910390f35b6104a4600480360381019061049f9190613ffe565b611c00565b005b6104c060048036038101906104bb9190613e8b565b611c61565b6040516104cd9190613fbd565b60405180910390f35b6104f060048036038101906104eb9190613e4d565b611e11565b005b61050c60048036038101906105079190613dbb565b611eed565b6040516105199190613fe5565b60405180910390f35b61053c60048036038101906105379190613dbb565b611f0a565b005b61055860048036038101906105539190613ffe565b612076565b60405161056591906142b6565b60405180910390f35b6105886004803603810190610583919061432c565b6120b0565b005b61059261256c565b60405161059f9190613fbd565b60405180910390f35b6105c260048036038101906105bd9190613dbb565b612572565b005b6105de60048036038101906105d99190613ffe565b61260b565b005b6105fa60048036038101906105f59190613ffe565b6126e6565b005b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90614453565b60405180910390fd5b6106926006825f5f6128d3565b50565b600381565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a90614453565b60405180910390fd5b5f8211610765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075c906144bb565b60405180910390fd5b610772600482845f6128d3565b5050565b61077e613d2a565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490508210610800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f790614523565b60405180910390fd5b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20828154811061084f5761084e614541565b5b905f5260205f2090600402016040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff161515151581525050905092915050565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092590614453565b60405180910390fd5b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905082106109b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a790614523565b60405180910390fd5b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208381548110610a00576109ff614541565b5b905f5260205f2090600402016040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050806060015115610a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8c906145b8565b60405180910390fd5b610aa260038585856128d3565b50505050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490509050919050565b600b602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b6002805403610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5690614620565b60405180910390fd5b60028081905550600654811015610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290614688565b60405180910390fd5b610bf933308360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612bae909392919063ffffffff16565b60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060405180608001604052804281526020018381526020015f81526020015f1515815250908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff0219169083151502179055505050610cc4612c30565b3373ffffffffffffffffffffffffffffffffffffffff167fa71eef8c3504c826a61a75aae215013ad17a2a42a3ed754b2ecfd6a00aea175282600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610d4a91906146d3565b604051610d58929190614029565b60405180910390a2600160028190555050565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90614453565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5990614750565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906147b8565b60405180910390fd5b610ef96001825f5f6128d3565b50565b60088181548110610f0b575f80fd5b905f5260205f2090600202015f91509050805f0154908060010154905082565b600d602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b6002805403610f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9090614620565b60405180910390fd5b6002808190555060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490508310611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101990614523565b60405180910390fd5b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f9054906101000a900460ff16156110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290614820565b60405180910390fd5b5f84308585466040516020016110d59594939291906148a3565b6040516020818303038152906040528051906020012090505f816040516020016110ff9190614975565b6040516020818303038152906040528051906020012090508573ffffffffffffffffffffffffffffffffffffffff166111388285612cdf565b73ffffffffffffffffffffffffffffffffffffffff161461118e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611185906149e4565b60405180910390fd5b6001600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f205f6101000a81548160ff0219169083151502179055506111fd868688612d49565b5050600160028190555050505050565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90614453565b60405180910390fd5b600e5481106112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190614a4c565b60405180910390fd5b5f600a5f8381526020019081526020015f2090508060030160069054906101000a900460ff1615611340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133790614ab4565b60405180910390fd5b620151808160030160019054906101000a900464ffffffffff166113649190614ad2565b64ffffffffff164211156113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a490614b54565b60405180910390fd5b600b5f8381526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d90614bbc565b60405180910390fd5b6001600b5f8481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001816003015f8282829054906101000a900460ff166114ca9190614bda565b92506101000a81548160ff021916908360ff1602179055503373ffffffffffffffffffffffffffffffffffffffff16827f6b9a473d8cdfb2c4d26206aeb1c9031cbb772d924d5fa1e66a65e9f107fe5d6160405160405180910390a35050565b60075481565b61157e33308360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612bae909392919063ffffffff16565b611586612c30565b7ff20eee77e59136d8e132734c70e8c738f31edfcfe7a535357c8781c52e463e37816040516115b59190613fbd565b60405180910390a150565b600c602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b5f5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161164691906142b6565b602060405180830381865afa158015611661573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116859190614c22565b90505f8103611697575f9150506118b7565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116f291906142b6565b602060405180830381865afa15801561170d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117319190614c22565b90505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561179e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c29190614c61565b90505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190614c61565b90505f81600a6118639190614dbb565b8561186e9190614e05565b83600a61187b9190614dbb565b6064866118889190614e05565b6118929190614e05565b61189c9190614e73565b9050606481116118ac57806118af565b60645b955050505050505b90565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90614453565b60405180910390fd5b600e548110611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e90614a4c565b60405180910390fd5b5f600a5f8381526020019081526020015f2090508060030160069054906101000a900460ff16156119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490614ab4565b60405180910390fd5b620151808160030160019054906101000a900464ffffffffff16611a119190614ad2565b64ffffffffff16421115611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5190614b54565b60405180910390fd5b611a62612ff5565b60ff16816003015f9054906101000a900460ff1660ff161015611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab190614eed565b60405180910390fd5b60018160030160066101000a81548160ff021916908315150217905550611ae082613018565b3373ffffffffffffffffffffffffffffffffffffffff16827f34ead3092188f6dd0c0e377fc72036d20bfdf31baaddc41d43a92cb77861d71560405160405180910390a35050565b600a602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690805f0160149054906101000a900460ff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015490806003015f9054906101000a900460ff16908060030160019054906101000a900464ffffffffff16908060030160069054906101000a900460ff16908060030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905088565b6002805403611c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3b90614620565b60405180910390fd5b60028081905550611c56338233612d49565b600160028190555050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490508210611ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdb90614523565b60405180910390fd5b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208381548110611d3457611d33614541565b5b905f5260205f2090600402016040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015f9054906101000a900460ff1615151515815250509050806060015115611dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc090614f55565b60405180910390fd5b5f815f015142611dd991906146d3565b905063bbf81e00816007548460200151611df39190614e05565b611dfd9190614e05565b611e079190614e73565b9250505092915050565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9190614453565b60405180910390fd5b5f8211611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed3906144bb565b60405180910390fd5b611ee9600882845f6128d3565b5050565b6001602052805f5260405f205f915054906101000a900460ff1681565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8a90614453565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201390614fbd565b60405180910390fd5b600360ff165f8054905011612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90615025565b60405180910390fd5b6120736002825f5f6128d3565b50565b5f8181548110612084575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054036120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb90614620565b60405180910390fd5b60028081905550600654871015612140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213790614688565b60405180910390fd5b600d5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f9054906101000a900460ff16156121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d090614820565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf89308a8a8a8a8a6040518863ffffffff1660e01b815260040161223f9796959493929190615052565b5f604051808303815f87803b158015612256575f5ffd5b505af1158015612268573d5f5f3e3d5ffd5b505050505f88308985466040516020016122869594939291906148a3565b6040516020818303038152906040528051906020012090505f816040516020016122b09190614975565b6040516020818303038152906040528051906020012090508973ffffffffffffffffffffffffffffffffffffffff166122e98285612cdf565b73ffffffffffffffffffffffffffffffffffffffff161461233f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612336906149e4565b60405180910390fd5b6001600d5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f205f6101000a81548160ff0219169083151502179055506123f18a308b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612bae909392919063ffffffff16565b60095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060405180608001604052804281526020018b81526020015f81526020015f1515815250908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548160ff02191690831515021790555050506124bc612c30565b8973ffffffffffffffffffffffffffffffffffffffff167fa71eef8c3504c826a61a75aae215013ad17a2a42a3ed754b2ecfd6a00aea17528a600160095f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905061254291906146d3565b604051612550929190614029565b60405180910390a2505060016002819055505050505050505050565b600e5481565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f290614453565b60405180910390fd5b6126086005825f5f6128d3565b50565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268b90614453565b60405180910390fd5b5f81116126d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cd90615109565b60405180910390fd5b6126e360075f835f6128d3565b50565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661276f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276690614453565b60405180910390fd5b600e5481106127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa90614a4c565b60405180910390fd5b5f600a5f8381526020019081526020015f2090508060030160069054906101000a900460ff1615612819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281090614ab4565b60405180910390fd5b620151808160030160019054906101000a900464ffffffffff1661283d9190614ad2565b64ffffffffff164211612885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287c90615171565b60405180910390fd5b60018160030160066101000a81548160ff021916908315150217905550817fb041fdff7bae79379e87f88fa03488f14d5971cf97d7ab015bbb2ec3141f03bb60405160405180910390a25050565b5f600e5f8154809291906128e69061518f565b9190505590506040518061010001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018660ff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001600160ff1681526020014264ffffffffff1681526020015f151581526020018373ffffffffffffffffffffffffffffffffffffffff16815250600a5f8381526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a81548160ff021916908360ff1602179055506040820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600201556080820151816003015f6101000a81548160ff021916908360ff16021790555060a08201518160030160016101000a81548164ffffffffff021916908364ffffffffff16021790555060c08201518160030160066101000a81548160ff02191690831515021790555060e08201518160030160076101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506001600b5f8381526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16817fdf94f3ab3b138abc7e6129b23362255bebd3e48a16651f2301f7d806f1e962d5878787604051612b9f939291906151d6565b60405180910390a35050505050565b612c2a848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612be39392919061520b565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061341b565b50505050565b5f612c396115ea565b90506007548103612c4a5750612cdd565b806007819055506008604051806040016040528042815260200183815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f01556020820151816001015550507f3cb6685fcb7249092411f19ff77b057c9d3a78ef837ca851d8abeb622c4808948142604051612cd3929190614029565b60405180910390a1505b565b5f5f5f5f612cec856134f7565b9250925092506001868285856040515f8152602001604052604051612d149493929190615240565b6020604051602081039080840390855afa158015612d34573d5f5f3e3d5ffd5b50505060206040510351935050505092915050565b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208381548110612d9957612d98614541565b5b905f5260205f2090600402019050806003015f9054906101000a900460ff1615612df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612def906145b8565b60405180910390fd5b5f5f9050600554825f015442612e0e91906146d3565b10612e2057612e1d8585611c61565b90505b6001826003015f6101000a81548160ff0219169083151502179055508082600201819055508473ffffffffffffffffffffffffffffffffffffffff167f46f449c0252002d75c7be381bfb5b6a8b5d5e2b43a93ca30871853854f8aed5c8484600101548488604051612e959493929190615283565b60405180910390a2612eed83836001015460035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661355c9092919063ffffffff16565b612ef5612c30565b5f81118015612f9c57508060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612f5a91906142b6565b602060405180830381865afa158015612f75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f999190614c22565b10155b15612fee57612fed838260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661355c9092919063ffffffff16565b5b5050505050565b5f600160025f8054905061300991906152c6565b6130139190614bda565b905090565b5f600a5f8381526020019081526020015f209050600160ff16815f0160149054906101000a900460ff1660ff160361307b57613076816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166135db565b613417565b600260ff16815f0160149054906101000a900460ff1660ff16036130ca576130c5816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661375e565b613416565b600360ff16815f0160149054906101000a900460ff1660ff16036131435761313e816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600201548360030160079054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612d49565b613415565b600460ff16815f0160149054906101000a900460ff1660ff1603613197576131928160020154826001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613a5a565b613414565b600860ff16815f0160149054906101000a900460ff1660ff16036131eb576131e68160020154826001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613bc6565b613413565b600560ff16815f0160149054906101000a900460ff1660ff16036132cb57806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f27f1eca9c5ae0d5400bd1205428fb05f8cc5dd934c236155676b86ecfe4bc73f816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516132be91906142b6565b60405180910390a1613412565b600660ff16815f0160149054906101000a900460ff1660ff16036133ab57806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f30b802b190ff6fc2079c45a9e4c61150c937544c4c54ae45a49eecf675eca50e816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161339e91906142b6565b60405180910390a1613411565b600760ff16815f0160149054906101000a900460ff1660ff16036134105780600201546005819055507f029f215d619dde936621c22eae3530deea5ced9041e3e24c356fd8c1b6523a9181600201546040516134079190613fbd565b60405180910390a15b5b5b5b5b5b5b5b5050565b5f5f8373ffffffffffffffffffffffffffffffffffffffff16836040516134429190615348565b5f604051808303815f865af19150503d805f811461347b576040519150601f19603f3d011682016040523d82523d5f602084013e613480565b606091505b50915091508115806134af57505f81511180156134ae5750808060200190518101906134ac9190615388565b155b5b156134f157836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016134e891906142b6565b60405180910390fd5b50505050565b5f5f5f604184511461353e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613535906153fd565b60405180910390fd5b602084015192506040840151915060608401515f1a90509193909250565b6135d6838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161358f92919061541b565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061341b565b505050565b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161365c906147b8565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f913240b5956eddddfa96348c122c687fa5a9f2317e9d3079989088ddb20ffbc060405160405180910390a250565b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166137e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137de90614fbd565b60405180910390fd5b600360ff165f8054905011613831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161382890615025565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f5f90505b5f80549050811015613a13578173ffffffffffffffffffffffffffffffffffffffff165f82815481106138c0576138bf614541565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613a065760015f8054905061391491906146d3565b81146139be575f60015f8054905061392c91906146d3565b8154811061393d5761393c614541565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f828154811061397857613977614541565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5f8054806139cf576139ce615442565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613a13565b808060010191505061388a565b508073ffffffffffffffffffffffffffffffffffffffff167f2224b4fb176175716dc5f841b9ebc479288b0f841a37fbd8f7dae80a410994ef60405160405180910390a250565b8160045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613ab591906142b6565b602060405180830381865afa158015613ad0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613af49190614c22565b1015613b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b2c906154b9565b60405180910390fd5b613b81818360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661355c9092919063ffffffff16565b613b89612c30565b7f751c0075b6c76ee4e70b440385a42af38a64389bf4884366b7049678429072298282604051613bba9291906154d7565b60405180910390a15050565b8160035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613c2191906142b6565b602060405180830381865afa158015613c3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c609190614c22565b1015613ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c98906154b9565b60405180910390fd5b613ced818360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661355c9092919063ffffffff16565b7fe2e93a7a9efeb50966e63885a7bc208c6ad5a1543d6d806c8302494bc571df2c8282604051613d1e9291906154d7565b60405180910390a15050565b60405180608001604052805f81526020015f81526020015f81526020015f151581525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613d8a82613d61565b9050919050565b613d9a81613d80565b8114613da4575f5ffd5b50565b5f81359050613db581613d91565b92915050565b5f60208284031215613dd057613dcf613d59565b5b5f613ddd84828501613da7565b91505092915050565b5f60ff82169050919050565b613dfb81613de6565b82525050565b5f602082019050613e145f830184613df2565b92915050565b5f819050919050565b613e2c81613e1a565b8114613e36575f5ffd5b50565b5f81359050613e4781613e23565b92915050565b5f5f60408385031215613e6357613e62613d59565b5b5f613e7085828601613e39565b9250506020613e8185828601613da7565b9150509250929050565b5f5f60408385031215613ea157613ea0613d59565b5b5f613eae85828601613da7565b9250506020613ebf85828601613e39565b9150509250929050565b613ed281613e1a565b82525050565b5f8115159050919050565b613eec81613ed8565b82525050565b608082015f820151613f065f850182613ec9565b506020820151613f196020850182613ec9565b506040820151613f2c6040850182613ec9565b506060820151613f3f6060850182613ee3565b50505050565b5f608082019050613f585f830184613ef2565b92915050565b5f5f5f60608486031215613f7557613f74613d59565b5b5f613f8286828701613da7565b9350506020613f9386828701613e39565b9250506040613fa486828701613da7565b9150509250925092565b613fb781613e1a565b82525050565b5f602082019050613fd05f830184613fae565b92915050565b613fdf81613ed8565b82525050565b5f602082019050613ff85f830184613fd6565b92915050565b5f6020828403121561401357614012613d59565b5b5f61402084828501613e39565b91505092915050565b5f60408201905061403c5f830185613fae565b6140496020830184613fae565b9392505050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61409e82614058565b810181811067ffffffffffffffff821117156140bd576140bc614068565b5b80604052505050565b5f6140cf613d50565b90506140db8282614095565b919050565b5f67ffffffffffffffff8211156140fa576140f9614068565b5b61410382614058565b9050602081019050919050565b828183375f83830152505050565b5f61413061412b846140e0565b6140c6565b90508281526020810184848401111561414c5761414b614054565b5b614157848285614110565b509392505050565b5f82601f83011261417357614172614050565b5b813561418384826020860161411e565b91505092915050565b5f5f5f5f608085870312156141a4576141a3613d59565b5b5f6141b187828801613da7565b94505060206141c287828801613e39565b93505060406141d387828801613e39565b925050606085013567ffffffffffffffff8111156141f4576141f3613d5d565b5b6142008782880161415f565b91505092959194509250565b61421581613d80565b82525050565b5f64ffffffffff82169050919050565b6142348161421b565b82525050565b5f6101008201905061424e5f83018b61420c565b61425b602083018a613df2565b614268604083018961420c565b6142756060830188613fae565b6142826080830187613df2565b61428f60a083018661422b565b61429c60c0830185613fd6565b6142a960e083018461420c565b9998505050505050505050565b5f6020820190506142c95f83018461420c565b92915050565b6142d881613de6565b81146142e2575f5ffd5b50565b5f813590506142f3816142cf565b92915050565b5f819050919050565b61430b816142f9565b8114614315575f5ffd5b50565b5f8135905061432681614302565b92915050565b5f5f5f5f5f5f5f5f610100898b03121561434957614348613d59565b5b5f6143568b828c01613da7565b98505060206143678b828c01613e39565b97505060406143788b828c01613e39565b96505060606143898b828c016142e5565b955050608061439a8b828c01614318565b94505060a06143ab8b828c01614318565b93505060c06143bc8b828c01613e39565b92505060e089013567ffffffffffffffff8111156143dd576143dc613d5d565b5b6143e98b828c0161415f565b9150509295985092959890939650565b5f82825260208201905092915050565b7f536f6c6f2070726f706965746172696f730000000000000000000000000000005f82015250565b5f61443d6011836143f9565b915061444882614409565b602082019050919050565b5f6020820190508181035f83015261446a81614431565b9050919050565b7f4d6f6e746f20696e76616c69646f0000000000000000000000000000000000005f82015250565b5f6144a5600e836143f9565b91506144b082614471565b602082019050919050565b5f6020820190508181035f8301526144d281614499565b9050919050565b7f496e6469636520696e76616c69646f00000000000000000000000000000000005f82015250565b5f61450d600f836143f9565b9150614518826144d9565b602082019050919050565b5f6020820190508181035f83015261453a81614501565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5374616b652079612066696e616c697a61646f000000000000000000000000005f82015250565b5f6145a26013836143f9565b91506145ad8261456e565b602082019050919050565b5f6020820190508181035f8301526145cf81614596565b9050919050565b7f5265656e7472616e6369612064657465637461646100000000000000000000005f82015250565b5f61460a6015836143f9565b9150614615826145d6565b602082019050919050565b5f6020820190508181035f830152614637816145fe565b9050919050565b7f43616e7469646164206d696e696d61206e6f20616c63616e7a616461000000005f82015250565b5f614672601c836143f9565b915061467d8261463e565b602082019050919050565b5f6020820190508181035f83015261469f81614666565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6146dd82613e1a565b91506146e883613e1a565b9250828203905081811115614700576146ff6146a6565b5b92915050565b7f446972656363696f6e20696e76616c69646100000000000000000000000000005f82015250565b5f61473a6012836143f9565b915061474582614706565b602082019050919050565b5f6020820190508181035f8301526147678161472e565b9050919050565b7f59612065732070726f706965746172696f0000000000000000000000000000005f82015250565b5f6147a26011836143f9565b91506147ad8261476e565b602082019050919050565b5f6020820190508181035f8301526147cf81614796565b9050919050565b7f4e6f6e636520796120757361646f0000000000000000000000000000000000005f82015250565b5f61480a600e836143f9565b9150614815826147d6565b602082019050919050565b5f6020820190508181035f830152614837816147fe565b9050919050565b5f8160601b9050919050565b5f6148548261483e565b9050919050565b5f6148658261484a565b9050919050565b61487d61487882613d80565b61485b565b82525050565b5f819050919050565b61489d61489882613e1a565b614883565b82525050565b5f6148ae828861486c565b6014820191506148be828761486c565b6014820191506148ce828661488c565b6020820191506148de828561488c565b6020820191506148ee828461488c565b6020820191508190509695505050505050565b5f81905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f82015250565b5f61493f601c83614901565b915061494a8261490b565b601c82019050919050565b5f819050919050565b61496f61496a826142f9565b614955565b82525050565b5f61497f82614933565b915061498b828461495e565b60208201915081905092915050565b7f4669726d6120696e76616c6964610000000000000000000000000000000000005f82015250565b5f6149ce600e836143f9565b91506149d98261499a565b602082019050919050565b5f6020820190508181035f8301526149fb816149c2565b9050919050565b7f50726f707565737461206e6f20657869737465000000000000000000000000005f82015250565b5f614a366013836143f9565b9150614a4182614a02565b602082019050919050565b5f6020820190508181035f830152614a6381614a2a565b9050919050565b7f50726f70756573746120796120656a65637574616461000000000000000000005f82015250565b5f614a9e6016836143f9565b9150614aa982614a6a565b602082019050919050565b5f6020820190508181035f830152614acb81614a92565b9050919050565b5f614adc8261421b565b9150614ae78361421b565b9250828201905064ffffffffff811115614b0457614b036146a6565b5b92915050565b7f50726f70756573746120636164756361646100000000000000000000000000005f82015250565b5f614b3e6012836143f9565b9150614b4982614b0a565b602082019050919050565b5f6020820190508181035f830152614b6b81614b32565b9050919050565b7f59612068617320766f7461646f000000000000000000000000000000000000005f82015250565b5f614ba6600d836143f9565b9150614bb182614b72565b602082019050919050565b5f6020820190508181035f830152614bd381614b9a565b9050919050565b5f614be482613de6565b9150614bef83613de6565b9250828201905060ff811115614c0857614c076146a6565b5b92915050565b5f81519050614c1c81613e23565b92915050565b5f60208284031215614c3757614c36613d59565b5b5f614c4484828501614c0e565b91505092915050565b5f81519050614c5b816142cf565b92915050565b5f60208284031215614c7657614c75613d59565b5b5f614c8384828501614c4d565b91505092915050565b5f8160011c9050919050565b5f5f8291508390505b6001851115614ce157808604811115614cbd57614cbc6146a6565b5b6001851615614ccc5780820291505b8081029050614cda85614c8c565b9450614ca1565b94509492505050565b5f82614cf95760019050614db4565b81614d06575f9050614db4565b8160018114614d1c5760028114614d2657614d55565b6001915050614db4565b60ff841115614d3857614d376146a6565b5b8360020a915084821115614d4f57614d4e6146a6565b5b50614db4565b5060208310610133831016604e8410600b8410161715614d8a5782820a905083811115614d8557614d846146a6565b5b614db4565b614d978484846001614c98565b92509050818404811115614dae57614dad6146a6565b5b81810290505b9392505050565b5f614dc582613e1a565b9150614dd083613de6565b9250614dfd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614cea565b905092915050565b5f614e0f82613e1a565b9150614e1a83613e1a565b9250828202614e2881613e1a565b91508282048414831517614e3f57614e3e6146a6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614e7d82613e1a565b9150614e8883613e1a565b925082614e9857614e97614e46565b5b828204905092915050565b7f4e6f20736520686120616c63616e7a61646f20656c20756d6272616c000000005f82015250565b5f614ed7601c836143f9565b9150614ee282614ea3565b602082019050919050565b5f6020820190508181035f830152614f0481614ecb565b9050919050565b7f5374616b652066696e616c697a61646f000000000000000000000000000000005f82015250565b5f614f3f6010836143f9565b9150614f4a82614f0b565b602082019050919050565b5f6020820190508181035f830152614f6c81614f33565b9050919050565b7f4e6f2065732070726f706965746172696f0000000000000000000000000000005f82015250565b5f614fa76011836143f9565b9150614fb282614f73565b602082019050919050565b5f6020820190508181035f830152614fd481614f9b565b9050919050565b7f4e6f20736520707565646520656c696d696e61720000000000000000000000005f82015250565b5f61500f6014836143f9565b915061501a82614fdb565b602082019050919050565b5f6020820190508181035f83015261503c81615003565b9050919050565b61504c816142f9565b82525050565b5f60e0820190506150655f83018a61420c565b615072602083018961420c565b61507f6040830188613fae565b61508c6060830187613fae565b6150996080830186613df2565b6150a660a0830185615043565b6150b360c0830184615043565b98975050505050505050565b7f506c617a6f20696e76616c69646f0000000000000000000000000000000000005f82015250565b5f6150f3600e836143f9565b91506150fe826150bf565b602082019050919050565b5f6020820190508181035f830152615120816150e7565b9050919050565b7f50726f7075657374612061756e20656e20706572696f646f00000000000000005f82015250565b5f61515b6018836143f9565b915061516682615127565b602082019050919050565b5f6020820190508181035f8301526151888161514f565b9050919050565b5f61519982613e1a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151cb576151ca6146a6565b5b600182019050919050565b5f6060820190506151e95f830186613df2565b6151f6602083018561420c565b6152036040830184613fae565b949350505050565b5f60608201905061521e5f83018661420c565b61522b602083018561420c565b6152386040830184613fae565b949350505050565b5f6080820190506152535f830187615043565b6152606020830186613df2565b61526d6040830185615043565b61527a6060830184615043565b95945050505050565b5f6080820190506152965f83018761420c565b6152a36020830186613fae565b6152b06040830185613fae565b6152bd6060830184613fae565b95945050505050565b5f6152d082613de6565b91506152db83613de6565b9250826152eb576152ea614e46565b5b828204905092915050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f615322826152f6565b61532c8185615300565b935061533c81856020860161530a565b80840191505092915050565b5f6153538284615318565b915081905092915050565b61536781613ed8565b8114615371575f5ffd5b50565b5f815190506153828161535e565b92915050565b5f6020828403121561539d5761539c613d59565b5b5f6153aa84828501615374565b91505092915050565b7f496e76616c6964207369676e6174757265206c656e67746800000000000000005f82015250565b5f6153e76018836143f9565b91506153f2826153b3565b602082019050919050565b5f6020820190508181035f830152615414816153db565b9050919050565b5f60408201905061542e5f83018561420c565b61543b6020830184613fae565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f53616c646f20696e737566696369656e746500000000000000000000000000005f82015250565b5f6154a36012836143f9565b91506154ae8261546f565b602082019050919050565b5f6020820190508181035f8301526154d081615497565b9050919050565b5f6040820190506154ea5f830185613fae565b6154f7602083018461420c565b939250505056fea264697066735822122020bd5099486146cf4a5e77c2f5aaba710d9d8ae6d7ab24fcd5dca17f785726a964736f6c634300081c003300000000000000000000000080e0dfe47b2caa9c13915931d50347a1ef350912000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000000000000000000000000000000000000013c680000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000030000000000000000000000004dd0780061c28be55b7f9b422c85d4079093d7c2000000000000000000000000f91739210a88dacc2ed6156f728eeeabb8488c5d00000000000000000000000079584e0fe04a36faa2dc85cf6e0fadd411fb856b