0 txs
2.2k calls
constructor
constructor(address _xerc20, uint256 _scale, address _mailbox)
functions
allowedBridges
viewfunction allowedBridges(uint32 domain) view returns (address[])
allowedRebalancers
viewfunction allowedRebalancers() view returns (address[])
allowedRecipient
viewfunction allowedRecipient(uint32 routerDomain) view returns (bytes32 recipient)
balanceOf
viewfunction balanceOf(address _account) view returns (uint256)
destinationGas
viewfunction destinationGas(uint32 destinationDomain) view returns (uint256 gasLimit)
domains
viewfunction domains() view returns (uint32[])
hook
viewfunction hook() view returns (address)
interchainSecurityModule
viewfunction interchainSecurityModule() view returns (address)
localDomain
viewfunction localDomain() view returns (uint32)
mailbox
viewfunction mailbox() view returns (address)
owner
viewfunction owner() view returns (address)
PACKAGE_VERSION
viewfunction PACKAGE_VERSION() view returns (string)
quoteGasPayment
viewfunction quoteGasPayment(uint32 _destinationDomain) view returns (uint256)
quoteTransferRemote
viewfunction quoteTransferRemote(uint32 _destinationDomain, bytes32 _recipient, uint256 _amount) view returns (tuple[] quotes)
routers
viewfunction routers(uint32 _domain) view returns (bytes32)
scale
viewfunction scale() view returns (uint256)
wrappedToken
viewfunction wrappedToken() view returns (address)
addBridge
nonpayablefunction addBridge(uint32 domain, address bridge)
addRebalancer
nonpayablefunction addRebalancer(address rebalancer)
approveTokenForBridge
nonpayablefunction approveTokenForBridge(address token, address bridge)
enrollRemoteRouter
nonpayablefunction enrollRemoteRouter(uint32 _domain, bytes32 _router)
enrollRemoteRouters
nonpayablefunction enrollRemoteRouters(uint32[] _domains, bytes32[] _addresses)
handle
payablefunction handle(uint32 _origin, bytes32 _sender, bytes _message) payable
initialize
nonpayablefunction initialize(address _hook, address _interchainSecurityModule, address _owner)
rebalance
payablefunction rebalance(uint32 domain, uint256 amount, address bridge) payable
registerERC777Recipient
nonpayablefunction registerERC777Recipient()
removeBridge
nonpayablefunction removeBridge(uint32 domain, address bridge)
removeRebalancer
nonpayablefunction removeRebalancer(address rebalancer)
removeRecipient
nonpayablefunction removeRecipient(uint32 domain)
renounceOwnership
nonpayablefunction renounceOwnership()
setDestinationGas
nonpayablefunction setDestinationGas(tuple[] gasConfigs)
setDestinationGas
nonpayablefunction setDestinationGas(uint32 domain, uint256 gas)
setHook
nonpayablefunction setHook(address _hook)
setInterchainSecurityModule
nonpayablefunction setInterchainSecurityModule(address _module)
setRecipient
nonpayablefunction setRecipient(uint32 domain, bytes32 recipient)
tokensReceived
nonpayablefunction tokensReceived(address operator, address from, address to, uint256 amount, bytes userData, bytes operatorData)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
transferRemote
payablefunction transferRemote(uint32 _destination, bytes32 _recipient, uint256 _amountOrId, bytes _hookMetadata, address _hook) payable returns (bytes32 messageId)
transferRemote
payablefunction transferRemote(uint32 _destination, bytes32 _recipient, uint256 _amountOrId) payable returns (bytes32 messageId)
unenrollRemoteRouter
nonpayablefunction unenrollRemoteRouter(uint32 _domain)
unenrollRemoteRouters
nonpayablefunction unenrollRemoteRouters(uint32[] _domains)
events
CollateralMoved
event CollateralMoved(uint32 indexed domain, bytes32 recipient, uint256 amount, address indexed rebalancer)
GasSet
event GasSet(uint32 domain, uint256 gas)
HookSet
event HookSet(address _hook)
Initialized
event Initialized(uint8 version)
IsmSet
event IsmSet(address _ism)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ReceivedTransferRemote
event ReceivedTransferRemote(uint32 indexed origin, bytes32 indexed recipient, uint256 amount)
SentTransferRemote
event SentTransferRemote(uint32 indexed destination, bytes32 indexed recipient, uint256 amount)
TokensReceived
event TokensReceived(address operator, address from, address to, uint256 amount, bytes userData, bytes operatorData)
errors
No errors.
creation bytecode
0x61012060405234801561001157600080fd5b50604051615b22380380615b2283398181016040528101906100339190610473565b8282828181808080808061004c8161023160201b60201c565b61008b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008290610523565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff16638d3638f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561010c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610130919061057f565b63ffffffff1660a08163ffffffff16815250506101523361025460201b60201c565b50505050508160c0818152505050506101708361023160201b60201c565b6101af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101a69061061e565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250505050503373ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff168152505061022961031a60201b60201c565b505050610707565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff161561036a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610361906106b0565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff16146103d85760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff6040516103cf91906106ec565b60405180910390a15b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061040a826103df565b9050919050565b61041a816103ff565b811461042557600080fd5b50565b60008151905061043781610411565b92915050565b6000819050919050565b6104508161043d565b811461045b57600080fd5b50565b60008151905061046d81610447565b92915050565b60008060006060848603121561048c5761048b6103da565b5b600061049a86828701610428565b93505060206104ab8682870161045e565b92505060406104bc86828701610428565b9150509250925092565b600082825260208201905092915050565b7f4d61696c626f78436c69656e743a20696e76616c6964206d61696c626f780000600082015250565b600061050d601e836104c6565b9150610518826104d7565b602082019050919050565b6000602082019050818103600083015261053c81610500565b9050919050565b600063ffffffff82169050919050565b61055c81610543565b811461056757600080fd5b50565b60008151905061057981610553565b92915050565b600060208284031215610595576105946103da565b5b60006105a38482850161056a565b91505092915050565b7f4879704552433230436f6c6c61746572616c3a20696e76616c696420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006106086021836104c6565b9150610613826105ac565b604082019050919050565b60006020820190508181036000830152610637816105fb565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b600061069a6027836104c6565b91506106a58261063e565b604082019050919050565b600060208201905081810360008301526106c98161068d565b9050919050565b600060ff82169050919050565b6106e6816106d0565b82525050565b600060208201905061070160008301846106dd565b92915050565b60805160a05160c05160e0516101005161538361079f600039600061099c0152600081816110e5015281816113250152818161141201528181611d340152818161245e015281816124a5015281816127a401526128360152600081816118330152818161254901526127710152600061138b015260008181610e6f0152818161164e015281816125b90152612e4701526153836000f3fe6080604052600436106102455760003560e01c80637f5a7c7b11610139578063c3827115116100b6578063efae508a1161007a578063efae508a1461083f578063f2ed8c5314610868578063f2fde38b146108a5578063f51e181a146108ce578063fa57f157146108f9578063fbaca44c1461092257610245565b8063c38271151461076c578063c69c8ce214610795578063d5438eae146107c0578063de523cf3146107eb578063e9198bf91461081657610245565b806393c44847116100fd57806393c448471461069b578063996c6cc3146106c6578063b1bd6436146106f1578063b49c53a71461071a578063c0c53b8b1461074357610245565b80637f5a7c7b146105ad57806381b4e8b4146105d85780638bd90b82146106085780638d3638f4146106455780638da5cb5b1461067057610245565b806349d462ef116101c757806370a082311161018b57806370a08231146104b6578063715018a6146104f357806371a15b381461050a578063775313a11461053357806377e2dc7a1461057057610245565b806349d462ef146103fc5780634e38a81d1461042557806351debffc1461044e57806356d5d4751461047e5780636a99c3331461049a57610245565b80632c2d80891161020e5780632c2d8089146103195780632ead72f6146103425780633dfd38731461037f57806343bc4b9a146103a8578063440df4f4146103d157610245565b806223de291461024a5780630bc95ba4146102735780630c9799191461028a5780630e72cc06146102b35780631ba83149146102dc575b600080fd5b34801561025657600080fd5b50610271600480360381019061026c91906134c2565b61094b565b005b34801561027f57600080fd5b5061028861099a565b005b34801561029657600080fd5b506102b160048036038101906102ac9190613591565b610acd565b005b3480156102bf57600080fd5b506102da60048036038101906102d59190613591565b610aed565b005b3480156102e857600080fd5b5061030360048036038101906102fe91906135fa565b610bf1565b60405161031091906136e5565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b919061373d565b610c21565b005b34801561034e57600080fd5b50610369600480360381019061036491906135fa565b610c5b565b604051610376919061378c565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a19190613591565b610c84565b005b3480156103b457600080fd5b506103cf60048036038101906103ca9190613591565b610d88565b005b3480156103dd57600080fd5b506103e6610da8565b6040516103f39190613865565b60405180910390f35b34801561040857600080fd5b50610423600480360381019061041e9190613887565b610db9565b005b34801561043157600080fd5b5061044c60048036038101906104479190613905565b610dcf565b005b61046860048036038101906104639190613945565b610e0d565b604051610475919061378c565b60405180910390f35b610498600480360381019061049391906139df565b610e6d565b005b6104b460048036038101906104af9190613a53565b610f5d565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190613591565b6110e1565b6040516104ea9190613ab5565b60405180910390f35b3480156104ff57600080fd5b50610508611184565b005b34801561051657600080fd5b50610531600480360381019061052c9190613b26565b611198565b005b34801561053f57600080fd5b5061055a600480360381019061055591906135fa565b6111fd565b6040516105679190613ab5565b60405180910390f35b34801561057c57600080fd5b50610597600480360381019061059291906135fa565b611215565b6040516105a4919061378c565b60405180910390f35b3480156105b957600080fd5b506105c261122d565b6040516105cf9190613bd2565b60405180910390f35b6105f260048036038101906105ed9190613bed565b611253565b6040516105ff919061378c565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613bed565b61126a565b60405161063c9190613d2d565b60405180910390f35b34801561065157600080fd5b5061065a611389565b6040516106679190613d5e565b60405180910390f35b34801561067c57600080fd5b506106856113ad565b6040516106929190613d88565b60405180910390f35b3480156106a757600080fd5b506106b06113d7565b6040516106bd9190613e33565b60405180910390f35b3480156106d257600080fd5b506106db611410565b6040516106e89190613e76565b60405180910390f35b3480156106fd57600080fd5b5061071860048036038101906107139190613ee7565b611434565b005b34801561072657600080fd5b50610741600480360381019061073c919061373d565b6114b3565b005b34801561074f57600080fd5b5061076a60048036038101906107659190613f34565b6114c9565b005b34801561077857600080fd5b50610793600480360381019061078e91906135fa565b61160d565b005b3480156107a157600080fd5b506107aa61163b565b6040516107b791906136e5565b60405180910390f35b3480156107cc57600080fd5b506107d561164c565b6040516107e29190613fa8565b60405180910390f35b3480156107f757600080fd5b50610800611670565b60405161080d9190613fe4565b60405180910390f35b34801561082257600080fd5b5061083d60048036038101906108389190614055565b61169a565b005b34801561084b57600080fd5b50610866600480360381019061086191906135fa565b611763565b005b34801561087457600080fd5b5061088f600480360381019061088a91906135fa565b611777565b60405161089c9190613ab5565b60405180910390f35b3480156108b157600080fd5b506108cc60048036038101906108c79190613591565b6117ae565b005b3480156108da57600080fd5b506108e3611831565b6040516108f09190613ab5565b60405180910390f35b34801561090557600080fd5b50610920600480360381019061091b9190614114565b611855565b005b34801561092e57600080fd5b5061094960048036038101906109449190613905565b6118ac565b005b7fc516411697311e2344b800024721d1011dfc3c7f81c219c10582557cf463369088888888888888886040516109889897969594939291906141a1565b60405180910390a15050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1f90614260565b60405180910390fd5b731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b306040518463ffffffff1660e01b8152600401610a9993929190614280565b600060405180830381600087803b158015610ab357600080fd5b505af1158015610ac7573d6000803e3d6000fd5b50505050565b610ad56118f4565b610ae98160cd61197290919063ffffffff16565b5050565b80610af7816119a2565b80610b2e5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490614329565b60405180910390fd5b610b756118f4565b81606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc47cbcc588c67679e52261c45cc315e56562f8d0ccaba16facb9093ff949879982604051610be59190613d88565b60405180910390a15050565b6060610c1a60cc60008463ffffffff1663ffffffff1681526020019081526020016000206119c5565b9050919050565b610c296118f4565b610c32826119e6565b508060cb60008463ffffffff1663ffffffff168152602001908152602001600020819055505050565b600080610c788363ffffffff166097611a6390919063ffffffff16565b91505080915050919050565b80610c8e816119a2565b80610cc55750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90614329565b60405180910390fd5b610d0c6118f4565b81606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4eab7b127c764308788622363ad3e9532de3dfba7845bd4f84c125a22544255a82604051610d7c9190613d88565b60405180910390a15050565b610d906118f4565b610da48160cd611a8a90919063ffffffff16565b5050565b6060610db46097611aba565b905090565b610dc16118f4565b610dcb8282611b7d565b5050565b610dd76118f4565b610e088160cc60008563ffffffff1663ffffffff168152602001908152602001600020611a8a90919063ffffffff16565b505050565b6000610e618787873488888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087611bde565b90509695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef2906143bb565b60405180910390fd5b6000610f06856119e6565b9050838114610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f419061444d565b60405180910390fd5b610f5685858585611c63565b5050505050565b610f78610f68611cf5565b60cd611cfd90919063ffffffff16565b610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae906144b9565b60405180910390fd5b8281600060cc60008463ffffffff1663ffffffff1681526020019081526020016000209050610fef8282611cfd90919063ffffffff16565b61102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102590614525565b60405180910390fd5b6000611038611cf5565b9050600060cb60008963ffffffff1663ffffffff1681526020019081526020016000205490506000801b810361107457611071886119e6565b90505b61108088828989611d2d565b8173ffffffffffffffffffffffffffffffffffffffff168863ffffffff167fb1e1b117ddf429b1b8a359fe0e978f0ae191c0f70e0babfea7acaad1b0ee8a2d838a6040516110cf929190614545565b60405180910390a35050505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161113c9190613d88565b602060405180830381865afa158015611159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117d9190614583565b9050919050565b61118c6118f4565b6111966000611d8a565b565b6111a06118f4565b600082829050905060005b818110156111f7576111e38484838181106111c9576111c86145b0565b5b90506020020160208101906111de91906135fa565b611e50565b6001816111f0919061460e565b90506111ab565b50505050565b60ca6020528060005260406000206000915090505481565b60cb6020528060005260406000206000915090505481565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061126184848434611ea9565b90509392505050565b6060600267ffffffffffffffff81111561128757611286614642565b5b6040519080825280602002602001820160405280156112c057816020015b6112ad61338f565b8152602001906001900390816112a55790505b5090506040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016112f6868686611eed565b8152508160008151811061130d5761130c6145b0565b5b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018381525081600181518110611377576113766145b0565b5b60200260200101819052509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600581526020017f392e302e3200000000000000000000000000000000000000000000000000000081525081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61143c6118f4565b60005b828290508110156114ae5761149a8383838181106114605761145f6145b0565b5b905060400201600001602081019061147891906135fa565b84848481811061148b5761148a6145b0565b5b90506040020160200135611b7d565b6001816114a7919061460e565b905061143f565b505050565b6114bb6118f4565b6114c58282611f2e565b5050565b60008060019054906101000a900460ff161590508080156114fa5750600160008054906101000a900460ff1660ff16105b80611527575061150930611f4e565b1580156115265750600160008054906101000a900460ff1660ff16145b5b611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d906146e3565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156115a3576001600060016101000a81548160ff0219169083151502179055505b6115ae848484611f71565b80156116075760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516115fe919061474b565b60405180910390a15b50505050565b6116156118f4565b60cb60008263ffffffff1663ffffffff1681526020019081526020016000206000905550565b606061164760cd6119c5565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6116a26118f4565b8181905084849050146116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e1906147b2565b60405180910390fd5b600084849050905060005b8181101561175b57611747868683818110611713576117126145b0565b5b905060200201602081019061172891906135fa565b85858481811061173b5761173a6145b0565b5b90506020020135611f2e565b600181611754919061460e565b90506116f5565b505050505050565b61176b6118f4565b61177481611e50565b50565b60006117a7826000801b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611eed565b9050919050565b6117b66118f4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181c90614844565b60405180910390fd5b61182e81611d8a565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b61185d6118f4565b6118a8817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff16611fe89092919063ffffffff16565b5050565b6118b46118f4565b6118bd826119e6565b506118ef8160cc60008563ffffffff1663ffffffff16815260200190815260200160002061197290919063ffffffff16565b505050565b6118fc611cf5565b73ffffffffffffffffffffffffffffffffffffffff1661191a6113ad565b73ffffffffffffffffffffffffffffffffffffffff1614611970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611967906148b0565b60405180910390fd5b565b600061199a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612137565b905092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b606060006119d5836000016121a7565b905060608190508092505050919050565b6000806000611a058463ffffffff166097611a6390919063ffffffff16565b915091508115611a19578092505050611a5e565b611a2284612203565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a559190613e33565b60405180910390fd5b919050565b600080611a7f8360001b8560000161223a90919063ffffffff16565b915091509250929050565b6000611ab2836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612289565b905092915050565b60606000611ac78361239d565b9050805167ffffffffffffffff811115611ae457611ae3614642565b5b604051908082528060200260200182016040528015611b125781602001602082028036833780820191505090505b50915060005b8151811015611b7657818181518110611b3457611b336145b0565b5b6020026020010151838281518110611b4f57611b4e6145b0565b5b602002602001019063ffffffff16908163ffffffff16815250508080600101915050611b18565b5050919050565b8060ca60008463ffffffff1663ffffffff168152602001908152602001600020819055507fc3de732a98b24a2b5c6f67e8a7fb057ffc14046b83968a2c73e4148d2fba978b8282604051611bd29291906148d0565b60405180910390a15050565b600080611bea86612454565b90506000611bf787612545565b90506000611c0689838561257a565b9050611c158a888389896125a9565b9350888a63ffffffff167fd229aacb94204188fe8042965fa6b269c62dc5818b21238779ab64bdd17efeec84604051611c4e9190613ab5565b60405180910390a35050509695505050505050565b6000611c6f8383612668565b90506000611c7d84846126a3565b9050366000611c8c86866126e0565b91509150611cac611c9c85612704565b611ca58561276d565b84846127a2565b838863ffffffff167fba20947a325f450d232530e5f5fce293e7963499d5309a07cee84a269f2f15a685604051611ce39190613ab5565b60405180910390a35050505050505050565b600033905090565b6000611d25836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612880565b905092915050565b611d7881837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611fe89092919063ffffffff16565b611d84848484846128a3565b50505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60cb60008263ffffffff1663ffffffff16815260200190815260200160002060009055611e9d60cc60008363ffffffff1663ffffffff16815260200190815260200160002060000161292b565b611ea681612999565b50565b6000611ee385858585611ebb8a612a01565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611bde565b9050949350505050565b6000611f2584611efd8585612a32565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a5e565b90509392505050565b611f4a8263ffffffff16826097612a7d9092919063ffffffff16565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb79061496b565b60405180910390fd5b611fc8612a9e565b611fd183610c84565b611fda82610aed565b611fe381611d8a565b505050565b6000811480612072575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161202f92919061498b565b602060405180830381865afa15801561204c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120709190614583565b145b6120b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a890614a26565b60405180910390fd5b6121328363095ea7b360e01b84846040516024016120d0929190614a46565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612af7565b505050565b60006121438383612880565b61219c5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506121a1565b600090505b92915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156121f757602002820191906000526020600020905b8154815260200190600101908083116121e3575b50505050509050919050565b60606122148263ffffffff16612bbf565b6040516020016122249190614ad1565b6040516020818303038152906040529050919050565b60008060008460020160008581526020019081526020016000205490506000801b81036122795761226b8585612c8d565b6000801b9250925050612282565b60018192509250505b9250929050565b600080836001016000848152602001908152602001600020549050600081146123915760006001826122bb9190614af7565b90506000600186600001805490506122d39190614af7565b90508181146123425760008660000182815481106122f4576122f36145b0565b5b9060005260206000200154905080876000018481548110612318576123176145b0565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061235657612355614b2b565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612397565b60009150505b92915050565b606060006123ad83600001612cad565b90508067ffffffffffffffff8111156123c9576123c8614642565b5b6040519080825280602002602001820160405280156123f75781602001602082028036833780820191505090505b50915060005b8181101561244d5761241e8185600001600001612cc290919063ffffffff16565b60001c838281518110612434576124336145b0565b5b60200260200101818152505080806001019150506123fd565b5050919050565b60606124a33330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612cd9909392919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fe9d9303836040518263ffffffff1660e01b81526004016124fc9190614b80565b600060405180830381600087803b15801561251657600080fd5b505af115801561252a573d6000803e3d6000fd5b50505050604051806020016040528060008152509050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826125739190614bae565b9050919050565b606083838360405160200161259193929190614c79565b60405160208183030381529060405290509392505050565b6000806125b5876119e6565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166310b83dc08789848989896040518763ffffffff1660e01b8152600401612619959493929190614ceb565b60206040518083038185885af1158015612637573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061265c9190614d61565b91505095945050505050565b60008282600060ff1690602060006126809190614d8e565b60ff169261269093929190614dcd565b9061269b9190614e20565b905092915050565b60008282602060ff16906020806126ba9190614d8e565b60ff16926126ca93929190614dcd565b906126d59190614e20565b60001c905092915050565b3660008383604060ff169080926126f993929190614dcd565b915091509250929050565b600073ffffffffffffffffffffffffffffffffffffffff80168260001c1115612762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275990614ef1565b60405180910390fd5b8160001c9050919050565b60007f00000000000000000000000000000000000000000000000000000000000000008261279b9190614f40565b9050919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dcdc7dd030856040518363ffffffff1660e01b81526004016127fd929190614f71565b600060405180830381600087803b15801561281757600080fd5b505af115801561282b573d6000803e3d6000fd5b5050505061287a84847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612d629092919063ffffffff16565b50505050565b600080836001016000848152602001908152602001600020541415905092915050565b8073ffffffffffffffffffffffffffffffffffffffff166381b4e8b4348686866040518563ffffffff1660e01b81526004016128e193929190614fc0565b60206040518083038185885af11580156128ff573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129249190614d61565b5050505050565b60008160000180549050905060005b818110156129865782600101600084600001838154811061295e5761295d6145b0565b5b906000526020600020015481526020019081526020016000206000905580600101905061293a565b50612995826000016000612de8565b5050565b6129b38163ffffffff166097612def90919063ffffffff16565b6129bc82612203565b906129fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f49190613e33565b60405180910390fd5b5050565b6060612a2b60ca60008463ffffffff1663ffffffff16815260200190815260200160002054612e12565b9050919050565b60608282604051602001612a47929190614ff7565b604051602081830303815290604052905092915050565b6000612a748484612a6e87612a01565b85612e37565b90509392505050565b612a988260001b8285600001612ef29092919063ffffffff16565b50505050565b600060019054906101000a900460ff16612aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae49061496b565b60405180910390fd5b612af5612f2d565b565b6000612b59826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612f8e9092919063ffffffff16565b9050600081511480612b7b575080806020019051810190612b7a919061505b565b5b612bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb1906150fa565b60405180910390fd5b505050565b606060006001612bce84612fa6565b01905060008167ffffffffffffffff811115612bed57612bec614642565b5b6040519080825280601f01601f191660200182016040528015612c1f5781602001600182028036833780820191505090505b509050600082602001820190505b600115612c82578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612c7657612c75614f11565b5b04945060008503612c2d575b819350505050919050565b6000612ca582846000016130f990919063ffffffff16565b905092915050565b6000612cbb82600001613110565b9050919050565b6000612cd18360000183613125565b905092915050565b612d5c846323b872dd60e01b858585604051602401612cfa9392919061511a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612af7565b50505050565b612de38363a9059cbb60e01b8484604051602401612d81929190614a46565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612af7565b505050565b8082555050565b6000612e0a8260001b8460000161315090919063ffffffff16565b905092915050565b6060612e306000833360405180602001604052806000815250613189565b9050919050565b600080612e43866119e6565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166381d2ea9587838888886040518663ffffffff1660e01b8152600401612ea6959493929190614ceb565b602060405180830381865afa158015612ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee79190614583565b915050949350505050565b60008184600201600085815260200190815260200160002081905550612f2483856000016131be90919063ffffffff16565b90509392505050565b600060019054906101000a900460ff16612f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f739061496b565b60405180910390fd5b612f8c612f87611cf5565b611d8a565b565b6060612f9d84846000856131d5565b90509392505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613004577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612ffa57612ff9614f11565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613041576d04ee2d6d415b85acef8100000000838161303757613036614f11565b5b0492506020810190505b662386f26fc10000831061307057662386f26fc10000838161306657613065614f11565b5b0492506010810190505b6305f5e1008310613099576305f5e100838161308f5761308e614f11565b5b0492506008810190505b61271083106130be5761271083816130b4576130b3614f11565b5b0492506004810190505b606483106130e157606483816130d7576130d6614f11565b5b0492506002810190505b600a83106130f0576001810190505b80915050919050565b60006131088360000183612880565b905092915050565b600061311e826000016132a2565b9050919050565b600082600001828154811061313d5761313c6145b0565b5b9060005260206000200154905092915050565b60008260020160008381526020019081526020016000206000905561318182846000016132b390919063ffffffff16565b905092915050565b60606001858585856040516020016131a59594939291906151dd565b6040516020818303038152906040529050949350505050565b60006131cd8360000183612137565b905092915050565b60608247101561321a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613211906152aa565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161324391906152ca565b60006040518083038185875af1925050503d8060008114613280576040519150601f19603f3d011682016040523d82523d6000602084013e613285565b606091505b5091509150613296878383876132ca565b92505050949350505050565b600081600001805490509050919050565b60006132c28360000183612289565b905092915050565b6060831561332c576000835103613324576132e4856119a2565b613323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331a9061532d565b60405180910390fd5b5b829050613337565b613336838361333f565b5b949350505050565b6000825111156133525781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133869190613e33565b60405180910390fd5b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133f4826133c9565b9050919050565b613404816133e9565b811461340f57600080fd5b50565b600081359050613421816133fb565b92915050565b6000819050919050565b61343a81613427565b811461344557600080fd5b50565b60008135905061345781613431565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126134825761348161345d565b5b8235905067ffffffffffffffff81111561349f5761349e613462565b5b6020830191508360018202830111156134bb576134ba613467565b5b9250929050565b60008060008060008060008060c0898b0312156134e2576134e16133bf565b5b60006134f08b828c01613412565b98505060206135018b828c01613412565b97505060406135128b828c01613412565b96505060606135238b828c01613448565b955050608089013567ffffffffffffffff811115613544576135436133c4565b5b6135508b828c0161346c565b945094505060a089013567ffffffffffffffff811115613573576135726133c4565b5b61357f8b828c0161346c565b92509250509295985092959890939650565b6000602082840312156135a7576135a66133bf565b5b60006135b584828501613412565b91505092915050565b600063ffffffff82169050919050565b6135d7816135be565b81146135e257600080fd5b50565b6000813590506135f4816135ce565b92915050565b6000602082840312156136105761360f6133bf565b5b600061361e848285016135e5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61365c816133e9565b82525050565b600061366e8383613653565b60208301905092915050565b6000602082019050919050565b600061369282613627565b61369c8185613632565b93506136a783613643565b8060005b838110156136d85781516136bf8882613662565b97506136ca8361367a565b9250506001810190506136ab565b5085935050505092915050565b600060208201905081810360008301526136ff8184613687565b905092915050565b6000819050919050565b61371a81613707565b811461372557600080fd5b50565b60008135905061373781613711565b92915050565b60008060408385031215613754576137536133bf565b5b6000613762858286016135e5565b925050602061377385828601613728565b9150509250929050565b61378681613707565b82525050565b60006020820190506137a1600083018461377d565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137dc816135be565b82525050565b60006137ee83836137d3565b60208301905092915050565b6000602082019050919050565b6000613812826137a7565b61381c81856137b2565b9350613827836137c3565b8060005b8381101561385857815161383f88826137e2565b975061384a836137fa565b92505060018101905061382b565b5085935050505092915050565b6000602082019050818103600083015261387f8184613807565b905092915050565b6000806040838503121561389e5761389d6133bf565b5b60006138ac858286016135e5565b92505060206138bd85828601613448565b9150509250929050565b60006138d2826133e9565b9050919050565b6138e2816138c7565b81146138ed57600080fd5b50565b6000813590506138ff816138d9565b92915050565b6000806040838503121561391c5761391b6133bf565b5b600061392a858286016135e5565b925050602061393b858286016138f0565b9150509250929050565b60008060008060008060a08789031215613962576139616133bf565b5b600061397089828a016135e5565b965050602061398189828a01613728565b955050604061399289828a01613448565b945050606087013567ffffffffffffffff8111156139b3576139b26133c4565b5b6139bf89828a0161346c565b935093505060806139d289828a01613412565b9150509295509295509295565b600080600080606085870312156139f9576139f86133bf565b5b6000613a07878288016135e5565b9450506020613a1887828801613728565b935050604085013567ffffffffffffffff811115613a3957613a386133c4565b5b613a458782880161346c565b925092505092959194509250565b600080600060608486031215613a6c57613a6b6133bf565b5b6000613a7a868287016135e5565b9350506020613a8b86828701613448565b9250506040613a9c868287016138f0565b9150509250925092565b613aaf81613427565b82525050565b6000602082019050613aca6000830184613aa6565b92915050565b60008083601f840112613ae657613ae561345d565b5b8235905067ffffffffffffffff811115613b0357613b02613462565b5b602083019150836020820283011115613b1f57613b1e613467565b5b9250929050565b60008060208385031215613b3d57613b3c6133bf565b5b600083013567ffffffffffffffff811115613b5b57613b5a6133c4565b5b613b6785828601613ad0565b92509250509250929050565b6000819050919050565b6000613b98613b93613b8e846133c9565b613b73565b6133c9565b9050919050565b6000613baa82613b7d565b9050919050565b6000613bbc82613b9f565b9050919050565b613bcc81613bb1565b82525050565b6000602082019050613be76000830184613bc3565b92915050565b600080600060608486031215613c0657613c056133bf565b5b6000613c14868287016135e5565b9350506020613c2586828701613728565b9250506040613c3686828701613448565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c7581613427565b82525050565b604082016000820151613c916000850182613653565b506020820151613ca46020850182613c6c565b50505050565b6000613cb68383613c7b565b60408301905092915050565b6000602082019050919050565b6000613cda82613c40565b613ce48185613c4b565b9350613cef83613c5c565b8060005b83811015613d20578151613d078882613caa565b9750613d1283613cc2565b925050600181019050613cf3565b5085935050505092915050565b60006020820190508181036000830152613d478184613ccf565b905092915050565b613d58816135be565b82525050565b6000602082019050613d736000830184613d4f565b92915050565b613d82816133e9565b82525050565b6000602082019050613d9d6000830184613d79565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ddd578082015181840152602081019050613dc2565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e0582613da3565b613e0f8185613dae565b9350613e1f818560208601613dbf565b613e2881613de9565b840191505092915050565b60006020820190508181036000830152613e4d8184613dfa565b905092915050565b6000613e6082613b9f565b9050919050565b613e7081613e55565b82525050565b6000602082019050613e8b6000830184613e67565b92915050565b60008083601f840112613ea757613ea661345d565b5b8235905067ffffffffffffffff811115613ec457613ec3613462565b5b602083019150836040820283011115613ee057613edf613467565b5b9250929050565b60008060208385031215613efe57613efd6133bf565b5b600083013567ffffffffffffffff811115613f1c57613f1b6133c4565b5b613f2885828601613e91565b92509250509250929050565b600080600060608486031215613f4d57613f4c6133bf565b5b6000613f5b86828701613412565b9350506020613f6c86828701613412565b9250506040613f7d86828701613412565b9150509250925092565b6000613f9282613b9f565b9050919050565b613fa281613f87565b82525050565b6000602082019050613fbd6000830184613f99565b92915050565b6000613fce82613b9f565b9050919050565b613fde81613fc3565b82525050565b6000602082019050613ff96000830184613fd5565b92915050565b60008083601f8401126140155761401461345d565b5b8235905067ffffffffffffffff81111561403257614031613462565b5b60208301915083602082028301111561404e5761404d613467565b5b9250929050565b6000806000806040858703121561406f5761406e6133bf565b5b600085013567ffffffffffffffff81111561408d5761408c6133c4565b5b61409987828801613ad0565b9450945050602085013567ffffffffffffffff8111156140bc576140bb6133c4565b5b6140c887828801613fff565b925092505092959194509250565b60006140e1826133e9565b9050919050565b6140f1816140d6565b81146140fc57600080fd5b50565b60008135905061410e816140e8565b92915050565b6000806040838503121561412b5761412a6133bf565b5b6000614139858286016140ff565b925050602061414a858286016138f0565b9150509250929050565b600082825260208201905092915050565b82818337600083830152505050565b60006141808385614154565b935061418d838584614165565b61419683613de9565b840190509392505050565b600060c0820190506141b6600083018b613d79565b6141c3602083018a613d79565b6141d06040830189613d79565b6141dd6060830188613aa6565b81810360808301526141f0818688614174565b905081810360a0830152614205818486614174565b90509998505050505050505050565b7f4f6e6c79206465706c6f7965722063616e207265676973746572000000000000600082015250565b600061424a601a83613dae565b915061425582614214565b602082019050919050565b600060208201905081810360008301526142798161423d565b9050919050565b60006060820190506142956000830186613d79565b6142a2602083018561377d565b6142af6040830184613d79565b949350505050565b7f4d61696c626f78436c69656e743a20696e76616c696420636f6e74726163742060008201527f73657474696e6700000000000000000000000000000000000000000000000000602082015250565b6000614313602783613dae565b915061431e826142b7565b604082019050919050565b6000602082019050818103600083015261434281614306565b9050919050565b7f4d61696c626f78436c69656e743a2073656e646572206e6f74206d61696c626f60008201527f7800000000000000000000000000000000000000000000000000000000000000602082015250565b60006143a5602183613dae565b91506143b082614349565b604082019050919050565b600060208201905081810360008301526143d481614398565b9050919050565b7f456e726f6c6c656420726f7574657220646f6573206e6f74206d61746368207360008201527f656e646572000000000000000000000000000000000000000000000000000000602082015250565b6000614437602583613dae565b9150614442826143db565b604082019050919050565b600060208201905081810360008301526144668161442a565b9050919050565b7f4d43523a204f6e6c7920526562616c616e636572000000000000000000000000600082015250565b60006144a3601483613dae565b91506144ae8261446d565b602082019050919050565b600060208201905081810360008301526144d281614496565b9050919050565b7f4d43523a204e6f7420616c6c6f77656420627269646765000000000000000000600082015250565b600061450f601783613dae565b915061451a826144d9565b602082019050919050565b6000602082019050818103600083015261453e81614502565b9050919050565b600060408201905061455a600083018561377d565b6145676020830184613aa6565b9392505050565b60008151905061457d81613431565b92915050565b600060208284031215614599576145986133bf565b5b60006145a78482850161456e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061461982613427565b915061462483613427565b925082820190508082111561463c5761463b6145df565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006146cd602e83613dae565b91506146d882614671565b604082019050919050565b600060208201905081810360008301526146fc816146c0565b9050919050565b6000819050919050565b600060ff82169050919050565b600061473561473061472b84614703565b613b73565b61470d565b9050919050565b6147458161471a565b82525050565b6000602082019050614760600083018461473c565b92915050565b7f216c656e67746800000000000000000000000000000000000000000000000000600082015250565b600061479c600783613dae565b91506147a782614766565b602082019050919050565b600060208201905081810360008301526147cb8161478f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061482e602683613dae565b9150614839826147d2565b604082019050919050565b6000602082019050818103600083015261485d81614821565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061489a602083613dae565b91506148a582614864565b602082019050919050565b600060208201905081810360008301526148c98161488d565b9050919050565b60006040820190506148e56000830185613d4f565b6148f26020830184613aa6565b9392505050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000614955602b83613dae565b9150614960826148f9565b604082019050919050565b6000602082019050818103600083015261498481614948565b9050919050565b60006040820190506149a06000830185613d79565b6149ad6020830184613d79565b9392505050565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6000614a10603683613dae565b9150614a1b826149b4565b604082019050919050565b60006020820190508181036000830152614a3f81614a03565b9050919050565b6000604082019050614a5b6000830185613d79565b614a686020830184613aa6565b9392505050565b7f4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e3a2000815250565b600081905092915050565b6000614aab82613da3565b614ab58185614a95565b9350614ac5818560208601613dbf565b80840191505092915050565b6000614adc82614a6f565b601f82019150614aec8284614aa0565b915081905092915050565b6000614b0282613427565b9150614b0d83613427565b9250828203905081811115614b2557614b246145df565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b50565b6000614b6a600083614154565b9150614b7582614b5a565b600082019050919050565b6000604082019050614b956000830184613aa6565b8181036020830152614ba681614b5d565b905092915050565b6000614bb982613427565b9150614bc483613427565b9250828202614bd281613427565b91508282048414831517614be957614be86145df565b5b5092915050565b6000819050919050565b614c0b614c0682613707565b614bf0565b82525050565b6000819050919050565b614c2c614c2782613427565b614c11565b82525050565b600081519050919050565b600081905092915050565b6000614c5382614c32565b614c5d8185614c3d565b9350614c6d818560208601613dbf565b80840191505092915050565b6000614c858286614bfa565b602082019150614c958285614c1b565b602082019150614ca58284614c48565b9150819050949350505050565b6000614cbd82614c32565b614cc78185614154565b9350614cd7818560208601613dbf565b614ce081613de9565b840191505092915050565b600060a082019050614d006000830188613d4f565b614d0d602083018761377d565b8181036040830152614d1f8186614cb2565b90508181036060830152614d338185614cb2565b9050614d426080830184613bc3565b9695505050505050565b600081519050614d5b81613711565b92915050565b600060208284031215614d7757614d766133bf565b5b6000614d8584828501614d4c565b91505092915050565b6000614d998261470d565b9150614da48361470d565b9250828201905060ff811115614dbd57614dbc6145df565b5b92915050565b600080fd5b600080fd5b60008085851115614de157614de0614dc3565b5b83861115614df257614df1614dc8565b5b6001850283019150848603905094509492505050565b600082905092915050565b600082821b905092915050565b6000614e2c8383614e08565b82614e378135613707565b92506020821015614e7757614e727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802614e13565b831692505b505092915050565b7f5479706543617374733a2062797465733332546f41646472657373206f76657260008201527f666c6f7700000000000000000000000000000000000000000000000000000000602082015250565b6000614edb602483613dae565b9150614ee682614e7f565b604082019050919050565b60006020820190508181036000830152614f0a81614ece565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f4b82613427565b9150614f5683613427565b925082614f6657614f65614f11565b5b828204905092915050565b6000608082019050614f866000830185613d79565b614f936020830184613aa6565b8181036040830152614fa481614b5d565b90508181036060830152614fb781614b5d565b90509392505050565b6000606082019050614fd56000830186613d4f565b614fe2602083018561377d565b614fef6040830184613aa6565b949350505050565b60006150038285614bfa565b6020820191506150138284614c1b565b6020820191508190509392505050565b60008115159050919050565b61503881615023565b811461504357600080fd5b50565b6000815190506150558161502f565b92915050565b600060208284031215615071576150706133bf565b5b600061507f84828501615046565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006150e4602a83613dae565b91506150ef82615088565b604082019050919050565b60006020820190508181036000830152615113816150d7565b9050919050565b600060608201905061512f6000830186613d79565b61513c6020830185613d79565b6151496040830184613aa6565b949350505050565b600061ffff82169050919050565b60008160f01b9050919050565b60006151778261515f565b9050919050565b61518f61518a82615151565b61516c565b82525050565b60008160601b9050919050565b60006151ad82615195565b9050919050565b60006151bf826151a2565b9050919050565b6151d76151d2826133e9565b6151b4565b82525050565b60006151e9828861517e565b6002820191506151f98287614c1b565b6020820191506152098286614c1b565b60208201915061521982856151c6565b6014820191506152298284614c48565b91508190509695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000615294602683613dae565b915061529f82615238565b604082019050919050565b600060208201905081810360008301526152c381615287565b9050919050565b60006152d68284614c48565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000615317601d83613dae565b9150615322826152e1565b602082019050919050565b600060208201905081810360008301526153468161530a565b905091905056fea26469706673582212201a40fa64fe0e8fbc641afe50224383af9c46b1af80d3fe31fcf099c2f209188464736f6c634300081c00330000000000000000000000001d58e204ca59328007469a614522903d69dc0a4c00000000000000000000000000000000000000000000000000000000000000010000000000000000000000002971b9aec44be4eb673df1b88cdb57b96eefe8a4