23 txs
22 calls
constructor
constructor(address[] propietariosIniciales)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
aprobacionesPropuestas
viewfunction aprobacionesPropuestas(uint256, address) view returns (bool)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
conteoPropietarios
viewfunction conteoPropietarios() view returns (uint256)
conteoPropuestas
viewfunction conteoPropuestas() view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
emergencia
viewfunction emergencia(address) view returns (bool)
esPropietario
viewfunction esPropietario(address) view returns (bool)
gestores
viewfunction gestores(address) view returns (bool)
listaBlanca
viewfunction listaBlanca(address) view returns (bool)
listaBlancaActiva
viewfunction listaBlancaActiva() view returns (bool)
listaNegra
viewfunction listaNegra(address) view returns (bool)
listaNegraActiva
viewfunction listaNegraActiva() view returns (bool)
MAX_SUPPLY
viewfunction MAX_SUPPLY() view returns (uint256)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address) view returns (uint256)
paused
viewfunction paused() view returns (bool)
PERMIT_TYPEHASH
viewfunction PERMIT_TYPEHASH() view returns (bytes32)
propietarios
viewfunction propietarios(uint256) view returns (address)
propuestas
viewfunction propuestas(uint256) view returns (uint8 tipoOperacion, address destino, uint256 cantidad, bool nuevoEstado, uint256 timestamp, uint256 aprobaciones, bool ejecutada, bool cancelada)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
agregarAListaBlanca
nonpayablefunction agregarAListaBlanca(address cuenta)
agregarAListaNegra
nonpayablefunction agregarAListaNegra(address cuenta)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
cancelarPropuestaExpirada
nonpayablefunction cancelarPropuestaExpirada(uint256 idPropuesta)
confirmarPropuesta
nonpayablefunction confirmarPropuesta(uint256 idPropuesta)
ejecutarPropuesta
nonpayablefunction ejecutarPropuesta(uint256 idPropuesta)
pause
nonpayablefunction pause()
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
proponerAgregarEmergencia
nonpayablefunction proponerAgregarEmergencia(address cuenta) returns (uint256)
proponerAgregarGestor
nonpayablefunction proponerAgregarGestor(address gestor) returns (uint256)
proponerAgregarPropietario
nonpayablefunction proponerAgregarPropietario(address nuevoPropietario) returns (uint256)
proponerAlternarListaBlanca
nonpayablefunction proponerAlternarListaBlanca(bool nuevoEstado) returns (uint256)
proponerAlternarListaNegra
nonpayablefunction proponerAlternarListaNegra(bool nuevoEstado) returns (uint256)
proponerMintear
nonpayablefunction proponerMintear(address destino, uint256 cantidad) returns (uint256)
proponerPausarToken
nonpayablefunction proponerPausarToken() returns (uint256)
proponerQuemar
nonpayablefunction proponerQuemar(address destino, uint256 cantidad) returns (uint256)
proponerReanudarToken
nonpayablefunction proponerReanudarToken() returns (uint256)
proponerRemoverEmergencia
nonpayablefunction proponerRemoverEmergencia(address cuenta) returns (uint256)
proponerRemoverGestor
nonpayablefunction proponerRemoverGestor(address gestor) returns (uint256)
proponerRemoverPropietario
nonpayablefunction proponerRemoverPropietario(address propietarioAddr) returns (uint256)
removerDeListaBlanca
nonpayablefunction removerDeListaBlanca(address cuenta)
removerDeListaNegra
nonpayablefunction removerDeListaNegra(address cuenta)
transfer
nonpayablefunction transfer(address recipient, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address sender, address recipient, uint256 amount) returns (bool)
unpause
nonpayablefunction unpause()
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Paused
event Paused(address account)
PropuestaCancelada
event PropuestaCancelada(uint256 indexed id)
PropuestaConfirmada
event PropuestaConfirmada(uint256 indexed id, address propietario, uint256 aprobaciones)
PropuestaCreada
event PropuestaCreada(uint256 indexed id, uint8 tipo, address destino, uint256 cantidad, bool nuevoEstado, uint256 timestamp)
PropuestaEjecutada
event PropuestaEjecutada(uint256 indexed id, uint8 tipo)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
creation bytecode
0x60a060405234801562000010575f80fd5b506040516200698d3803806200698d833981810160405281019062000036919062000685565b6003815110156200007e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000759062000758565b60405180910390fd5b5f5b815181101562000277575f828281518110620000a157620000a062000778565b5b602002602001015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200011390620007f3565b60405180910390fd5b60035f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166200026857600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060048054905060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600481908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50808060010191505062000080565b506004805490506006819055506012600a620002949190620009a5565b624c4b40620002a49190620009f5565b5f819055505f5460015f60045f81548110620002c557620002c462000778565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060045f8154811062000341576200034062000778565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f54604051620003c8919062000a50565b60405180910390a37f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600f81526020017f4761696e6f766f2054726164696e670000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012046306040516020016200048395949392919062000a96565b60405160208183030381529060405280519060200120608081815250505062000af1565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200050482620004bc565b810181811067ffffffffffffffff82111715620005265762000525620004cc565b5b80604052505050565b5f6200053a620004a7565b9050620005488282620004f9565b919050565b5f67ffffffffffffffff8211156200056a5762000569620004cc565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620005aa826200057f565b9050919050565b620005bc816200059e565b8114620005c7575f80fd5b50565b5f81519050620005da81620005b1565b92915050565b5f620005f6620005f0846200054d565b6200052f565b905080838252602082019050602084028301858111156200061c576200061b6200057b565b5b835b81811015620006495780620006348882620005ca565b8452602084019350506020810190506200061e565b5050509392505050565b5f82601f8301126200066a5762000669620004b8565b5b81516200067c848260208601620005e0565b91505092915050565b5f602082840312156200069d576200069c620004b0565b5b5f82015167ffffffffffffffff811115620006bd57620006bc620004b4565b5b620006cb8482850162000653565b91505092915050565b5f82825260208201905092915050565b7f53652072657175696572656e20616c206d656e6f7320332070726f70696574615f8201527f72696f7300000000000000000000000000000000000000000000000000000000602082015250565b5f62000740602483620006d4565b91506200074d82620006e4565b604082019050919050565b5f6020820190508181035f830152620007718162000732565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f50726f706965746172696f20696e76616c69646f0000000000000000000000005f82015250565b5f620007db601483620006d4565b9150620007e882620007a5565b602082019050919050565b5f6020820190508181035f8301526200080c81620007cd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200089d5780860481111562000875576200087462000813565b5b6001851615620008855780820291505b8081029050620008958562000840565b945062000855565b94509492505050565b5f82620008b7576001905062000989565b81620008c6575f905062000989565b8160018114620008df5760028114620008ea5762000920565b600191505062000989565b60ff841115620008ff57620008fe62000813565b5b8360020a91508482111562000919576200091862000813565b5b5062000989565b5060208310610133831016604e8410600b84101617156200095a5782820a90508381111562000954576200095362000813565b5b62000989565b6200096984848460016200084c565b9250905081840481111562000983576200098262000813565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620009b18262000990565b9150620009be8362000999565b9250620009ed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008a6565b905092915050565b5f62000a018262000990565b915062000a0e8362000990565b925082820262000a1e8162000990565b9150828204841483151762000a385762000a3762000813565b5b5092915050565b62000a4a8162000990565b82525050565b5f60208201905062000a655f83018462000a3f565b92915050565b5f819050919050565b62000a7f8162000a6b565b82525050565b62000a90816200059e565b82525050565b5f60a08201905062000aab5f83018862000a74565b62000aba602083018762000a74565b62000ac9604083018662000a74565b62000ad8606083018562000a3f565b62000ae7608083018462000a85565b9695505050505050565b608051615e7c62000b115f395f818161100001526124240152615e7c5ff3fe608060405234801561000f575f80fd5b506004361061029e575f3560e01c80637cf080b211610165578063b5349464116100cc578063d505accf11610085578063d505accf14610901578063d92e8b4f1461091d578063dd62ed3e14610939578063e610085014610969578063e89bfe6914610985578063ef32b8e5146109a35761029e565b8063b534946414610807578063be8df5b614610823578063c07068a814610853578063c5e89c7714610883578063cca32000146108b3578063cd24ca3f146108e35761029e565b80638e1c5c241161011e5780638e1c5c241461071d57806391a8a9bb1461074d57806395d89b411461077d5780639c38017f1461079b578063a306027e146107b9578063a9059cbb146107d75761029e565b80637cf080b2146106355780637dad96e8146106655780637ecebe00146106955780638456cb59146106c557806384b2b3b2146106cf57806389614a68146106ff5761029e565b80633644e515116102095780636097e216116101c25780636097e216146105225780636c80b94e146105595780636d3a07f21461058957806370a08231146105b957806374cd269d146105e9578063799a830a146106195761029e565b80633644e515146104745780633f4ba83a146104925780634f6950451461049c57806354b2638c146104b85780635c903636146104d45780635c975abb146105045761029e565b806323b872dd1161025b57806323b872dd1461038a57806326d14a38146103ba57806328c3726c146103ea57806330adf81f1461041a578063313ce5671461043857806332cb6b0c146104565761029e565b806306fdde03146102a2578063077d3b51146102c0578063095ea7b3146102f05780630c2a463a1461032057806318160ddd146103505780631da0c69b1461036e575b5f80fd5b6102aa6109c1565b6040516102b7919061474d565b60405180910390f35b6102da60048036038101906102d591906147cb565b6109fa565b6040516102e7919061480e565b60405180910390f35b61030a60048036038101906103059190614851565b610a98565b60405161031791906148a9565b60405180910390f35b61033a600480360381019061033591906147cb565b610afd565b604051610347919061480e565b60405180910390f35b610358610b9b565b604051610365919061480e565b60405180910390f35b610388600480360381019061038391906147cb565b610ba3565b005b6103a4600480360381019061039f91906148c2565b610d7c565b6040516103b191906148a9565b60405180910390f35b6103d460048036038101906103cf91906147cb565b610ded565b6040516103e1919061480e565b60405180910390f35b61040460048036038101906103ff9190614851565b610f15565b604051610411919061480e565b60405180910390f35b610422610fb4565b60405161042f919061492a565b60405180910390f35b610440610fda565b60405161044d919061495e565b60405180910390f35b61045e610fdf565b60405161046b919061480e565b60405180910390f35b61047c610ffe565b604051610489919061492a565b60405180910390f35b61049a611022565b005b6104b660048036038101906104b191906147cb565b61114b565b005b6104d260048036038101906104cd9190614977565b611299565b005b6104ee60048036038101906104e991906149cc565b6114d3565b6040516104fb919061480e565b60405180910390f35b61050c611571565b60405161051991906148a9565b60405180910390f35b61053c60048036038101906105379190614977565b611583565b604051610550989796959493929190614a79565b60405180910390f35b610573600480360381019061056e91906147cb565b611617565b604051610580919061480e565b60405180910390f35b6105a3600480360381019061059e91906147cb565b6116b5565b6040516105b0919061480e565b60405180910390f35b6105d360048036038101906105ce91906147cb565b611821565b6040516105e0919061480e565b60405180910390f35b61060360048036038101906105fe91906147cb565b611867565b60405161061091906148a9565b60405180910390f35b610633600480360381019061062e9190614977565b611884565b005b61064f600480360381019061064a91906149cc565b611bc1565b60405161065c919061480e565b60405180910390f35b61067f600480360381019061067a9190614851565b611c5f565b60405161068c919061480e565b60405180910390f35b6106af60048036038101906106aa91906147cb565b611cfd565b6040516106bc919061480e565b60405180910390f35b6106cd611d12565b005b6106e960048036038101906106e491906147cb565b611e3d565b6040516106f691906148a9565b60405180910390f35b610707611e5a565b60405161071491906148a9565b60405180910390f35b61073760048036038101906107329190614af5565b611e6c565b60405161074491906148a9565b60405180910390f35b610767600480360381019061076291906147cb565b611e96565b60405161077491906148a9565b60405180910390f35b610785611eb3565b604051610792919061474d565b60405180910390f35b6107a3611eec565b6040516107b0919061480e565b60405180910390f35b6107c1611ef2565b6040516107ce91906148a9565b60405180910390f35b6107f160048036038101906107ec9190614851565b611f05565b6040516107fe91906148a9565b60405180910390f35b610821600480360381019061081c9190614977565b611f6a565b005b61083d600480360381019061083891906147cb565b61219c565b60405161084a91906148a9565b60405180910390f35b61086d600480360381019061086891906147cb565b6121b9565b60405161087a919061480e565b60405180910390f35b61089d60048036038101906108989190614977565b612257565b6040516108aa9190614b33565b60405180910390f35b6108cd60048036038101906108c891906147cb565b612292565b6040516108da91906148a9565b60405180910390f35b6108eb6122af565b6040516108f8919061480e565b60405180910390f35b61091b60048036038101906109169190614ba0565b61234b565b005b610937600480360381019061093291906147cb565b612596565b005b610953600480360381019061094e9190614c3d565b6126e4565b604051610960919061480e565b60405180910390f35b610983600480360381019061097e91906147cb565b612766565b005b61098d6128b5565b60405161099a919061480e565b60405180910390f35b6109ab612951565b6040516109b8919061480e565b60405180910390f35b6040518060400160405280600f81526020017f4761696e6f766f2054726164696e67000000000000000000000000000000000081525081565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b90614cc5565b60405180910390fd5b610a916009835f80612957565b9050919050565b5f60095f9054906101000a900460ff1615610ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adf90614d2d565b60405180910390fd5b610af3338484612d81565b6001905092915050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7e90614cc5565b60405180910390fd5b610b946005835f80612957565b9050919050565b5f8054905090565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2390614d95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190614dfd565b60405180910390fd5b60035f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b90614e8b565b60405180910390fd5b6001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60095f9054906101000a900460ff1615610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc390614d2d565b60405180910390fd5b610dd7843384612ed6565b610de2848484613042565b600190509392505050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6e90614cc5565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef890614ef3565b60405180910390fd5b610f0e6006835f80612957565b9050919050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690614cc5565b60405180910390fd5b610fac600184845f612957565b905092915050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c95f1b81565b601281565b6012600a610fed919061506d565b624c4b40610ffb91906150b7565b81565b7f000000000000000000000000000000000000000000000000000000000000000081565b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a290615142565b60405180910390fd5b60095f9054906101000a900460ff166110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f0906151aa565b60405180910390fd5b5f60095f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516111419190614b33565b60405180910390a1565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90614d95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123990614dfd565b60405180910390fd5b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131990614cc5565b60405180910390fd5b5f811180156113335750600a548111155b611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990615212565b60405180910390fd5b5f600b5f8381526020019081526020015f209050806005015f9054906101000a900460ff16156113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce9061527a565b60405180910390fd5b8060050160019054906101000a900460ff1615611429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611420906152e2565b60405180910390fd5b62015180816003015461143c9190615300565b42111561147e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114759061537d565b60405180910390fd5b61148782613449565b6114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd906153e5565b60405180910390fd5b6114cf82613494565b5050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155490614cc5565b60405180910390fd5b61156a60025f8085612957565b9050919050565b60095f9054906101000a900460ff1681565b600b602052805f5260405f205f91509050805f015f9054906101000a900460ff1690805f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015f9054906101000a900460ff1690806003015490806004015490806005015f9054906101000a900460ff16908060050160019054906101000a900460ff16905088565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166116a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169890614cc5565b60405180910390fd5b6116ae6008835f80612957565b9050919050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661173f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173690614cc5565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166117c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bf9061544d565b60405180910390fd5b60036006541161180d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611804906154db565b60405180910390fd5b61181a6007835f80612957565b9050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6008602052805f5260405f205f915054906101000a900460ff1681565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490614cc5565b60405180910390fd5b5f8111801561191e5750600a548111155b61195d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195490615212565b60405180910390fd5b5f600b5f8381526020019081526020015f209050806005015f9054906101000a900460ff16156119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b99061527a565b60405180910390fd5b8060050160019054906101000a900460ff1615611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b906152e2565b60405180910390fd5b620151808160030154611a279190615300565b421115611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a609061537d565b60405180910390fd5b600c5f8381526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990615543565b60405180910390fd5b6001600c5f8481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806004015f815480929190611b7a90615561565b9190505550817f182db298ac329f14b001e9886f5c6689f49303a6b3eabf343678c8624983bec7338360040154604051611bb59291906155a8565b60405180910390a25050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290614cc5565b60405180910390fd5b611c5860035f8085612957565b9050919050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce090614cc5565b60405180910390fd5b611cf55f84845f612957565b905092915050565b6010602052805f5260405f205f915090505481565b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9290615142565b60405180910390fd5b60095f9054906101000a900460ff1615611dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de190615619565b60405180910390fd5b600160095f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051611e339190614b33565b60405180910390a1565b6007602052805f5260405f205f915054906101000a900460ff1681565b600d5f9054906101000a900460ff1681565b600c602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b600e602052805f5260405f205f915054906101000a900460ff1681565b6040518060400160405280600381526020017f474e54000000000000000000000000000000000000000000000000000000000081525081565b600a5481565b600d60019054906101000a900460ff1681565b5f60095f9054906101000a900460ff1615611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90614d2d565b60405180910390fd5b611f60338484613042565b6001905092915050565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90614cc5565b60405180910390fd5b5f811180156120045750600a548111155b612043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203a90615212565b60405180910390fd5b5f600b5f8381526020019081526020015f209050806005015f9054906101000a900460ff16156120a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209f90615681565b60405180910390fd5b8060050160019054906101000a900460ff16156120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f1906156e9565b60405180910390fd5b62015180816003015461210d9190615300565b421161214e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214590615751565b60405180910390fd5b60018160050160016101000a81548160ff021916908315150217905550817f502fb3f2b3feb506cff6cdd9b279f00a8e78d3c49c554e340b2092533e24a3e760405160405180910390a25050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223a90614cc5565b60405180910390fd5b6122506004835f80612957565b9050919050565b60048181548110612266575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f602052805f5260405f205f915054906101000a900460ff1681565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233090614cc5565b60405180910390fd5b612346600a5f805f612957565b905090565b8342111561238e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612385906157b9565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c95f1b88888860105f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205489604051602001612409969594939291906157d7565b6040516020818303038152906040528051906020012090505f7f0000000000000000000000000000000000000000000000000000000000000000826040516020016124559291906158aa565b6040516020818303038152906040528051906020012090505f612485868686856140e0909392919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156124ee57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61252d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125249061592a565b60405180910390fd5b60105f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919061257a90615561565b919050555061258a8a8a8a612d81565b50505050505050505050565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661261f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261690614d95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361268d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268490614dfd565b60405180910390fd5b5f600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e690614d95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361285d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285490614dfd565b60405180910390fd5b6001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661293f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293690614cc5565b60405180910390fd5b61294c600b5f805f612957565b905090565b60065481565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580612b0e57505f600b8111156129a1576129a06149f7565b5b85600b8111156129b4576129b36149f7565b5b141580156129e757506001600b8111156129d1576129d06149f7565b5b85600b8111156129e4576129e36149f7565b5b14155b8015612a1857506004600b811115612a0257612a016149f7565b5b85600b811115612a1557612a146149f7565b5b14155b8015612a4957506005600b811115612a3357612a326149f7565b5b85600b811115612a4657612a456149f7565b5b14155b8015612a7a57506006600b811115612a6457612a636149f7565b5b85600b811115612a7757612a766149f7565b5b14155b8015612aab57506007600b811115612a9557612a946149f7565b5b85600b811115612aa857612aa76149f7565b5b14155b8015612adc57506008600b811115612ac657612ac56149f7565b5b85600b811115612ad957612ad86149f7565b5b14155b8015612b0d57506009600b811115612af757612af66149f7565b5b85600b811115612b0a57612b096149f7565b5b14155b5b612b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4490614dfd565b60405180910390fd5b600a5f815480929190612b5f90615561565b9190505550600a54905060405180610100016040528086600b811115612b8857612b876149f7565b5b81526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018315158152602001428152602001600181526020015f151581526020015f1515815250600b5f8381526020019081526020015f205f820151815f015f6101000a81548160ff0219169083600b811115612c0b57612c0a6149f7565b5b02179055506020820151815f0160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600101556060820151816002015f6101000a81548160ff0219169083151502179055506080820151816003015560a0820151816004015560c0820151816005015f6101000a81548160ff02191690831515021790555060e08201518160050160016101000a81548160ff0219169083151502179055509050506001600c5f8381526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550807f79e4f5e5175951df73c0d7f0e7d956eb97df5236788a7d415b9a93ba1af5d7cd8686868642604051612d71959493929190615948565b60405180910390a2949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de690614dfd565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ec9919061480e565b60405180910390a3505050565b5f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461303c5781811015612fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb3906159e3565b60405180910390fd5b81810360025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130aa57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6130e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e090614dfd565b60405180910390fd5b600d5f9054906101000a900460ff16156131d957600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131995750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6131d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131cf90615a4b565b60405180910390fd5b5b600d60019054906101000a900460ff16156132cc57600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561328c5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6132cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c290615ab3565b60405180910390fd5b5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334790615b1b565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161343b919061480e565b60405180910390a350505050565b5f8060036001600654600261345e91906150b7565b6134689190615300565b6134729190615b66565b905080600b5f8581526020019081526020015f20600401541015915050919050565b5f600b5f8381526020019081526020015f209050806005015f9054906101000a900460ff16156134f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f090615681565b60405180910390fd5b8060050160019054906101000a900460ff161561354b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613542906152e2565b60405180910390fd5b5f600b81111561355e5761355d6149f7565b5b815f015f9054906101000a900460ff16600b8111156135805761357f6149f7565b5b036135bb576135b6815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826001015461410e565b614079565b6001600b8111156135cf576135ce6149f7565b5b815f015f9054906101000a900460ff16600b8111156135f1576135f06149f7565b5b0361362c57613627815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600101546142b9565b614078565b6002600b8111156136405761363f6149f7565b5b815f015f9054906101000a900460ff16600b811115613662576136616149f7565b5b0361369557806002015f9054906101000a900460ff16600d5f6101000a81548160ff021916908315150217905550614077565b6003600b8111156136a9576136a86149f7565b5b815f015f9054906101000a900460ff16600b8111156136cb576136ca6149f7565b5b036136ff57806002015f9054906101000a900460ff16600d60016101000a81548160ff021916908315150217905550614076565b6004600b811115613713576137126149f7565b5b815f015f9054906101000a900460ff16600b811115613735576137346149f7565b5b036137b757600160075f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550614075565b6005600b8111156137cb576137ca6149f7565b5b815f015f9054906101000a900460ff16600b8111156137ed576137ec6149f7565b5b0361386e575f60075f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550614074565b6006600b811115613882576138816149f7565b5b815f015f9054906101000a900460ff16600b8111156138a4576138a36149f7565b5b03613ad75760035f825f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615613956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394d90614ef3565b60405180910390fd5b600160035f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060048054905060055f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506004815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f815480929190613acd90615561565b9190505550614073565b6007600b811115613aeb57613aea6149f7565b5b815f015f9054906101000a900460ff16600b811115613b0d57613b0c6149f7565b5b03613de357600360065411613b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b4e906154db565b60405180910390fd5b5f60035f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60055f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60046001600480549050613c479190615b96565b81548110613c5857613c57615bc9565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060048381548110613c9757613c96615bc9565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506004805480613d3057613d2f615bf6565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905560055f845f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560065f815480929190613dd790615c23565b91905055505050614072565b6008600b811115613df757613df66149f7565b5b815f015f9054906101000a900460ff16600b811115613e1957613e186149f7565b5b03613e9b57600160085f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550614071565b6009600b811115613eaf57613eae6149f7565b5b815f015f9054906101000a900460ff16600b811115613ed157613ed06149f7565b5b03613f52575f60085f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550614070565b600a600b811115613f6657613f656149f7565b5b815f015f9054906101000a900460ff16600b811115613f8857613f876149f7565b5b03613fe357600160095f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051613fd69190614b33565b60405180910390a161406f565b600b80811115613ff657613ff56149f7565b5b815f015f9054906101000a900460ff16600b811115614018576140176149f7565b5b0361406e575f60095f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516140659190614b33565b60405180910390a15b5b5b5b5b5b5b5b5b5b5b5b6001816005015f6101000a81548160ff021916908315150217905550817fdb3a7947c8b5d5687ae9eb7335d1ff922daf975d4a7c08f70f3243e0a4da8a01825f015f9054906101000a900460ff166040516140d49190615c4a565b60405180910390a25050565b5f805f806140f08888888861447a565b9250925092506141008282614561565b829350505050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361417c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161417390615cad565b60405180910390fd5b6012600a61418a919061506d565b624c4b4061419891906150b7565b815f546141a59190615300565b11156141e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141dd90615d15565b60405180910390fd5b805f808282546141f69190615300565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546142499190615300565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142ad919061480e565b60405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161431e90615d7d565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156143a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161439e90615de5565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546143f39190615b96565b92505081905550805f8082825461440a9190615b96565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161446e919061480e565b60405180910390a35050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156144b6575f600385925092509250614557565b5f6001888888886040515f81526020016040526040516144d99493929190615e03565b6020604051602081039080840390855afa1580156144f9573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361454a575f60015f801b93509350935050614557565b805f805f1b935093509350505b9450945094915050565b5f6003811115614574576145736149f7565b5b826003811115614587576145866149f7565b5b03156146bf57600160038111156145a1576145a06149f7565b5b8260038111156145b4576145b36149f7565b5b036145eb576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156145ff576145fe6149f7565b5b826003811115614612576146116149f7565b5b0361465657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161464d919061480e565b60405180910390fd5b600380811115614669576146686149f7565b5b82600381111561467c5761467b6149f7565b5b036146be57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016146b5919061492a565b60405180910390fd5b5b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156146fa5780820151818401526020810190506146df565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61471f826146c3565b61472981856146cd565b93506147398185602086016146dd565b61474281614705565b840191505092915050565b5f6020820190508181035f8301526147658184614715565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61479a82614771565b9050919050565b6147aa81614790565b81146147b4575f80fd5b50565b5f813590506147c5816147a1565b92915050565b5f602082840312156147e0576147df61476d565b5b5f6147ed848285016147b7565b91505092915050565b5f819050919050565b614808816147f6565b82525050565b5f6020820190506148215f8301846147ff565b92915050565b614830816147f6565b811461483a575f80fd5b50565b5f8135905061484b81614827565b92915050565b5f80604083850312156148675761486661476d565b5b5f614874858286016147b7565b92505060206148858582860161483d565b9150509250929050565b5f8115159050919050565b6148a38161488f565b82525050565b5f6020820190506148bc5f83018461489a565b92915050565b5f805f606084860312156148d9576148d861476d565b5b5f6148e6868287016147b7565b93505060206148f7868287016147b7565b92505060406149088682870161483d565b9150509250925092565b5f819050919050565b61492481614912565b82525050565b5f60208201905061493d5f83018461491b565b92915050565b5f60ff82169050919050565b61495881614943565b82525050565b5f6020820190506149715f83018461494f565b92915050565b5f6020828403121561498c5761498b61476d565b5b5f6149998482850161483d565b91505092915050565b6149ab8161488f565b81146149b5575f80fd5b50565b5f813590506149c6816149a2565b92915050565b5f602082840312156149e1576149e061476d565b5b5f6149ee848285016149b8565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600c8110614a3557614a346149f7565b5b50565b5f819050614a4582614a24565b919050565b5f614a5482614a38565b9050919050565b614a6481614a4a565b82525050565b614a7381614790565b82525050565b5f61010082019050614a8d5f83018b614a5b565b614a9a602083018a614a6a565b614aa760408301896147ff565b614ab4606083018861489a565b614ac160808301876147ff565b614ace60a08301866147ff565b614adb60c083018561489a565b614ae860e083018461489a565b9998505050505050505050565b5f8060408385031215614b0b57614b0a61476d565b5b5f614b188582860161483d565b9250506020614b29858286016147b7565b9150509250929050565b5f602082019050614b465f830184614a6a565b92915050565b614b5581614943565b8114614b5f575f80fd5b50565b5f81359050614b7081614b4c565b92915050565b614b7f81614912565b8114614b89575f80fd5b50565b5f81359050614b9a81614b76565b92915050565b5f805f805f805f60e0888a031215614bbb57614bba61476d565b5b5f614bc88a828b016147b7565b9750506020614bd98a828b016147b7565b9650506040614bea8a828b0161483d565b9550506060614bfb8a828b0161483d565b9450506080614c0c8a828b01614b62565b93505060a0614c1d8a828b01614b8c565b92505060c0614c2e8a828b01614b8c565b91505092959891949750929550565b5f8060408385031215614c5357614c5261476d565b5b5f614c60858286016147b7565b9250506020614c71858286016147b7565b9150509250929050565b7f536f6c6f2070726f706965746172696f730000000000000000000000000000005f82015250565b5f614caf6011836146cd565b9150614cba82614c7b565b602082019050919050565b5f6020820190508181035f830152614cdc81614ca3565b9050919050565b7f546f6b656e207061757361646f000000000000000000000000000000000000005f82015250565b5f614d17600d836146cd565b9150614d2282614ce3565b602082019050919050565b5f6020820190508181035f830152614d4481614d0b565b9050919050565b7f536f6c6f20676573746f726573000000000000000000000000000000000000005f82015250565b5f614d7f600d836146cd565b9150614d8a82614d4b565b602082019050919050565b5f6020820190508181035f830152614dac81614d73565b9050919050565b7f446972656363696f6e20696e76616c69646100000000000000000000000000005f82015250565b5f614de76012836146cd565b9150614df282614db3565b602082019050919050565b5f6020820190508181035f830152614e1481614ddb565b9050919050565b7f4e6f2073652070756564656e20626c6f71756561722070726f706965746172695f8201527f6f73000000000000000000000000000000000000000000000000000000000000602082015250565b5f614e756022836146cd565b9150614e8082614e1b565b604082019050919050565b5f6020820190508181035f830152614ea281614e69565b9050919050565b7f59612065732070726f706965746172696f0000000000000000000000000000005f82015250565b5f614edd6011836146cd565b9150614ee882614ea9565b602082019050919050565b5f6020820190508181035f830152614f0a81614ed1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115614f9357808604811115614f6f57614f6e614f11565b5b6001851615614f7e5780820291505b8081029050614f8c85614f3e565b9450614f53565b94509492505050565b5f82614fab5760019050615066565b81614fb8575f9050615066565b8160018114614fce5760028114614fd857615007565b6001915050615066565b60ff841115614fea57614fe9614f11565b5b8360020a91508482111561500157615000614f11565b5b50615066565b5060208310610133831016604e8410600b841016171561503c5782820a90508381111561503757615036614f11565b5b615066565b6150498484846001614f4a565b925090508184048111156150605761505f614f11565b5b81810290505b9392505050565b5f615077826147f6565b915061508283614943565b92506150af7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614f9c565b905092915050565b5f6150c1826147f6565b91506150cc836147f6565b92508282026150da816147f6565b915082820484148315176150f1576150f0614f11565b5b5092915050565b7f536f6c6f20726f6c20646520656d657267656e636961000000000000000000005f82015250565b5f61512c6016836146cd565b9150615137826150f8565b602082019050919050565b5f6020820190508181035f83015261515981615120565b9050919050565b7f4e6f2065737461207061757361646f00000000000000000000000000000000005f82015250565b5f615194600f836146cd565b915061519f82615160565b602082019050919050565b5f6020820190508181035f8301526151c181615188565b9050919050565b7f50726f707565737461206e6f20657869737465000000000000000000000000005f82015250565b5f6151fc6013836146cd565b9150615207826151c8565b602082019050919050565b5f6020820190508181035f830152615229816151f0565b9050919050565b7f50726f70756573746120796120656a65637574616461000000000000000000005f82015250565b5f6152646016836146cd565b915061526f82615230565b602082019050919050565b5f6020820190508181035f83015261529181615258565b9050919050565b7f50726f7075657374612063616e63656c616461000000000000000000000000005f82015250565b5f6152cc6013836146cd565b91506152d782615298565b602082019050919050565b5f6020820190508181035f8301526152f9816152c0565b9050919050565b5f61530a826147f6565b9150615315836147f6565b925082820190508082111561532d5761532c614f11565b5b92915050565b7f50726f70756573746120657870697261646100000000000000000000000000005f82015250565b5f6153676012836146cd565b915061537282615333565b602082019050919050565b5f6020820190508181035f8301526153948161535b565b9050919050565b7f4170726f626163696f6e657320696e737566696369656e7465730000000000005f82015250565b5f6153cf601a836146cd565b91506153da8261539b565b602082019050919050565b5f6020820190508181035f8301526153fc816153c3565b9050919050565b7f4e6f2065732070726f706965746172696f0000000000000000000000000000005f82015250565b5f6154376011836146cd565b915061544282615403565b602082019050919050565b5f6020820190508181035f8301526154648161542b565b9050919050565b7f4e6f2073652070756564652074656e6572206d656e6f7320646520332070726f5f8201527f706965746172696f730000000000000000000000000000000000000000000000602082015250565b5f6154c56029836146cd565b91506154d08261546b565b604082019050919050565b5f6020820190508181035f8301526154f2816154b9565b9050919050565b7f5961206170726f626173746500000000000000000000000000000000000000005f82015250565b5f61552d600c836146cd565b9150615538826154f9565b602082019050919050565b5f6020820190508181035f83015261555a81615521565b9050919050565b5f61556b826147f6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361559d5761559c614f11565b5b600182019050919050565b5f6040820190506155bb5f830185614a6a565b6155c860208301846147ff565b9392505050565b7f5961207061757361646f000000000000000000000000000000000000000000005f82015250565b5f615603600a836146cd565b915061560e826155cf565b602082019050919050565b5f6020820190508181035f830152615630816155f7565b9050919050565b7f596120656a6563757461646100000000000000000000000000000000000000005f82015250565b5f61566b600c836146cd565b915061567682615637565b602082019050919050565b5f6020820190508181035f8301526156988161565f565b9050919050565b7f59612063616e63656c61646100000000000000000000000000000000000000005f82015250565b5f6156d3600c836146cd565b91506156de8261569f565b602082019050919050565b5f6020820190508181035f830152615700816156c7565b9050919050565b7f50726f7075657374612061756e206163746976610000000000000000000000005f82015250565b5f61573b6014836146cd565b915061574682615707565b602082019050919050565b5f6020820190508181035f8301526157688161572f565b9050919050565b7f5065726d69736f20657870697261646f000000000000000000000000000000005f82015250565b5f6157a36010836146cd565b91506157ae8261576f565b602082019050919050565b5f6020820190508181035f8301526157d081615797565b9050919050565b5f60c0820190506157ea5f83018961491b565b6157f76020830188614a6a565b6158046040830187614a6a565b61581160608301866147ff565b61581e60808301856147ff565b61582b60a08301846147ff565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f615874600283615836565b915061587f82615840565b600282019050919050565b5f819050919050565b6158a461589f82614912565b61588a565b82525050565b5f6158b482615868565b91506158c08285615893565b6020820191506158d08284615893565b6020820191508190509392505050565b7f4669726d6120696e76616c6964610000000000000000000000000000000000005f82015250565b5f615914600e836146cd565b915061591f826158e0565b602082019050919050565b5f6020820190508181035f83015261594181615908565b9050919050565b5f60a08201905061595b5f830188614a5b565b6159686020830187614a6a565b61597560408301866147ff565b615982606083018561489a565b61598f60808301846147ff565b9695505050505050565b7f416c6c6f77616e636520657863656469646f00000000000000000000000000005f82015250565b5f6159cd6012836146cd565b91506159d882615999565b602082019050919050565b5f6020820190508181035f8301526159fa816159c1565b9050919050565b7f446972656363696f6e206e6f20656e206c6973746120626c616e6361000000005f82015250565b5f615a35601c836146cd565b9150615a4082615a01565b602082019050919050565b5f6020820190508181035f830152615a6281615a29565b9050919050565b7f446972656363696f6e20656e206c69737461206e6567726100000000000000005f82015250565b5f615a9d6018836146cd565b9150615aa882615a69565b602082019050919050565b5f6020820190508181035f830152615aca81615a91565b9050919050565b7f53616c646f20696e737566696369656e746500000000000000000000000000005f82015250565b5f615b056012836146cd565b9150615b1082615ad1565b602082019050919050565b5f6020820190508181035f830152615b3281615af9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615b70826147f6565b9150615b7b836147f6565b925082615b8b57615b8a615b39565b5b828204905092915050565b5f615ba0826147f6565b9150615bab836147f6565b9250828203905081811115615bc357615bc2614f11565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f615c2d826147f6565b91505f8203615c3f57615c3e614f11565b5b600182039050919050565b5f602082019050615c5d5f830184614a5b565b92915050565b7f4e6f207365207075656465206d696e74656172206120300000000000000000005f82015250565b5f615c976017836146cd565b9150615ca282615c63565b602082019050919050565b5f6020820190508181035f830152615cc481615c8b565b9050919050565b7f4d617820737570706c79207265616368656400000000000000000000000000005f82015250565b5f615cff6012836146cd565b9150615d0a82615ccb565b602082019050919050565b5f6020820190508181035f830152615d2c81615cf3565b9050919050565b7f4e6f207365207075656465207175656d617220646520300000000000000000005f82015250565b5f615d676017836146cd565b9150615d7282615d33565b602082019050919050565b5f6020820190508181035f830152615d9481615d5b565b9050919050565b7f43616e74696461642061207175656d6172206d61796f7220616c2073616c646f5f82015250565b5f615dcf6020836146cd565b9150615dda82615d9b565b602082019050919050565b5f6020820190508181035f830152615dfc81615dc3565b9050919050565b5f608082019050615e165f83018761491b565b615e23602083018661494f565b615e30604083018561491b565b615e3d606083018461491b565b9594505050505056fea26469706673582212209b7f9ef1365aa5fcc822599aee762e4bccf8bf4da226915a37a2d47ac7efd19664736f6c63430008180033000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030000000000000000000000004dd0780061c28be55b7f9b422c85d4079093d7c2000000000000000000000000f91739210a88dacc2ed6156f728eeeabb8488c5d00000000000000000000000079584e0fe04a36faa2dc85cf6e0fadd411fb856b