227 txs
255 calls
constructor
constructor(address signerAddress_, address redeemAddress_, address team_, address admin_)
functions
admin
viewfunction admin() view returns (address)
crowdsales
viewfunction crowdsales(uint256) view returns (uint256 priceInEuro, uint256 priceInEuroPreSale, address collection, address bottle, uint8 phase, uint256 preSaleEndTime)
DECIMAL_FACTOR_DISCOUNT
viewfunction DECIMAL_FACTOR_DISCOUNT() view returns (uint256)
DECIMAL_FACTOR_PRICE
viewfunction DECIMAL_FACTOR_PRICE() view returns (uint256)
getPrice
viewfunction getPrice(address token, address to, uint256 amount, uint256 priceInEuro, uint256 coupon, bool isMint, bool isCollectionHolder) view returns (uint256)
isValidSignature
viewfunction isValidSignature(address account, bytes signature, address bottle, uint256 coupon, bool isCollectionHolder, uint256 expirationTime) view returns (bool)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
priceOracle
viewfunction priceOracle(address) view returns (address)
priceOracleEuro
viewfunction priceOracleEuro() view returns (address)
redeemAddress
viewfunction redeemAddress() view returns (address)
signatures
viewfunction signatures(bytes) view returns (bool)
signerAddress
viewfunction signerAddress() view returns (address)
team
viewfunction team() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addCrowdsale
nonpayablefunction addCrowdsale(uint256 id_, uint256 priceInEuro_, uint256 priceInEuroPreSale_, address collection_, address bottle_)
preMint
payablefunction preMint(tuple params) payable returns (uint256, uint256)
publicMint
payablefunction publicMint(tuple params) payable returns (uint256, uint256)
redeem
payablefunction redeem(tuple data, address[] bottleContracts, uint256[] tokenIds, bytes signatureIntercellar) payable
renounceOwnership
nonpayablefunction renounceOwnership()
setAdmin
nonpayablefunction setAdmin(address admin_)
setCollection
nonpayablefunction setCollection(uint256 crowdsaleId, address collection)
setOraclePrice
nonpayablefunction setOraclePrice(address token, address oracle)
setOraclePriceEuro
nonpayablefunction setOraclePriceEuro(address oracle)
setPhase
nonpayablefunction setPhase(uint256 crowdsaleId, uint8 phase, uint256 duration)
setPreSalePrice
nonpayablefunction setPreSalePrice(uint256 crowdsaleId, uint256 priceInEuro)
setRedeemAddress
nonpayablefunction setRedeemAddress(address redeemAddress_)
setSalePrice
nonpayablefunction setSalePrice(uint256 crowdsaleId, uint256 priceInEuro)
setSigner
nonpayablefunction setSigner(address signer_)
setTeamAddress
nonpayablefunction setTeamAddress(address teamAddress_)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawEther
nonpayablefunction withdrawEther()
withdrawToken
nonpayablefunction withdrawToken(address token)
events
AdminUpdated
event AdminUpdated(address _admin)
CollectionChanged
event CollectionChanged(uint256 indexed crowdsaleID, address indexed collection)
CrowdsaleAdded
event CrowdsaleAdded(uint256 indexed crowdsaleId, uint256 priceInEuro, uint256 priceInEuroPreSale, address collection, address bottle)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
PhaseChanged
event PhaseChanged(uint256 indexed crowdsaleId, uint8 phase, uint256 preSaleEndTime)
PreMinted
event PreMinted(uint256 indexed crowdsaleId, address indexed to, uint256 amount, uint256 priceInEuro, uint256 coupon, uint256 pricePaid, uint256 orderId)
PriceChanged
event PriceChanged(uint256 indexed crowdsaleId, uint256 priceInEuro)
PriceChangedPreSale
event PriceChangedPreSale(uint256 indexed crowdsaleId, uint256 priceInEuro)
PriceOracleChanged
event PriceOracleChanged(address indexed token, address indexed oracle)
PriceOracleEuroChanged
event PriceOracleEuroChanged(address indexed oracle)
PublicMinted
event PublicMinted(uint256 indexed crowdsaleId, address indexed to, uint256 amount, uint256 priceInEuro, uint256 coupon, uint256 pricePaid, uint256 orderId)
RedeemAddressUpdated
event RedeemAddressUpdated(address indexed redeemAddress)
Redeemed
event Redeemed(address[] bottles, uint256[] ids, address owner, uint256 redeemId)
SignerChanged
event SignerChanged(address indexed signer)
TeamAddressUpdated
event TeamAddressUpdated(address indexed team)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506040516200646b3803806200646b8339818101604052810190620000379190620004e6565b620000576200004b6200032d60201b60201c565b6200033560201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603620000c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000c090620005b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200013b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013290620005b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a490620005b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200021f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021690620005b9565b60405180910390fd5b83600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050620005db565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905562000370816200037360201b62002b5a1760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000469826200043c565b9050919050565b6200047b816200045c565b81146200048757600080fd5b50565b6000815190506200049b8162000470565b92915050565b6000620004ae826200043c565b9050919050565b620004c081620004a1565b8114620004cc57600080fd5b50565b600081519050620004e081620004b5565b92915050565b6000806000806080858703121562000503576200050262000437565b5b600062000513878288016200048a565b945050602062000526878288016200048a565b93505060406200053987828801620004cf565b92505060606200054c878288016200048a565b91505092959194509250565b600082825260208201905092915050565b7f43726f776473616c653a207a65726f2061646472657373000000000000000000600082015250565b6000620005a160178362000558565b9150620005ae8262000569565b602082019050919050565b60006020820190508181036000830152620005d48162000592565b9050919050565b615e8080620005eb6000396000f3fe6080604052600436106101ee5760003560e01c8063894760691161010d578063c4d9ac05116100a0578063d31e22de1161006f578063d31e22de1461069f578063e30c3978146106dc578063e346111914610707578063f2fde38b14610730578063f851a44014610759576101ee565b8063c4d9ac05146105df578063ca0581dc1461061c578063cde8f5f614610645578063d177524b14610676576101ee565b8063a00401a7116100dc578063a00401a71461050e578063a1b1e99f1461054b578063b54bb8d814610574578063b90e854e1461059d576101ee565b806389476069146104735780638ada7d161461049c5780638da5cb5b146104b857806399afd777146104e3576101ee565b80636690864e116101855780637362377b116101545780637362377b146103e957806379ba50971461040057806385f2aef21461041757806388dc6a7e14610442576101ee565b80636690864e146103575780636c19e78314610380578063704b6c02146103a9578063715018a6146103d2576101ee565b80632951f1b2116101c15780632951f1b21461029b5780632fee4a17146102d85780634950f643146103035780635b7633d01461032c576101ee565b8063053992c5146101f35780630613c16c1461021c57806320ad051a14610247578063265b515014610270575b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190613869565b610784565b005b34801561022857600080fd5b5061023161088a565b60405161023e91906138b8565b60405180910390f35b34801561025357600080fd5b5061026e600480360381019061026991906138f8565b610890565b005b34801561027c57600080fd5b50610285610a25565b604051610292919061398c565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd91906139d3565b610a4b565b6040516102cf919061398c565b60405180910390f35b3480156102e457600080fd5b506102ed610a7e565b6040516102fa919061398c565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190613a00565b610aa4565b005b34801561033857600080fd5b50610341610dea565b60405161034e919061398c565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190613ab9565b610e10565b005b34801561038c57600080fd5b506103a760048036038101906103a291906139d3565b610f0e565b005b3480156103b557600080fd5b506103d060048036038101906103cb91906139d3565b61100c565b005b3480156103de57600080fd5b506103e76110fe565b005b3480156103f557600080fd5b506103fe611112565b005b34801561040c57600080fd5b50610415611169565b005b34801561042357600080fd5b5061042c6111f6565b6040516104399190613af5565b60405180910390f35b61045c60048036038101906104579190613dcd565b61121c565b60405161046a929190613e16565b60405180910390f35b34801561047f57600080fd5b5061049a600480360381019061049591906139d3565b6118fd565b005b6104b660048036038101906104b19190613fa9565b6119b2565b005b3480156104c457600080fd5b506104cd611bf1565b6040516104da919061398c565b60405180910390f35b3480156104ef57600080fd5b506104f8611c1a565b60405161050591906138b8565b60405180910390f35b34801561051a57600080fd5b506105356004803603810190610530919061406f565b611c21565b60405161054291906138b8565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190614111565b61200c565b005b34801561058057600080fd5b5061059b60048036038101906105969190614151565b6120f0565b005b3480156105a957600080fd5b506105c460048036038101906105bf9190614191565b61223c565b6040516105d696959493929190614294565b60405180910390f35b3480156105eb57600080fd5b50610606600480360381019061060191906142f5565b6122c5565b60405161061391906143ad565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e9190613869565b612423565b005b61065f600480360381019061065a91906144c4565b612529565b60405161066d929190613e16565b60405180910390f35b34801561068257600080fd5b5061069d600480360381019061069891906139d3565b61289a565b005b3480156106ab57600080fd5b506106c660048036038101906106c1919061450d565b612929565b6040516106d391906143ad565b60405180910390f35b3480156106e857600080fd5b506106f161295f565b6040516106fe919061398c565b60405180910390f35b34801561071357600080fd5b5061072e600480360381019061072991906139d3565b612989565b005b34801561073c57600080fd5b50610757600480360381019061075291906139d3565b612a87565b005b34801561076557600080fd5b5061076e612b34565b60405161077b919061398c565b60405180910390f35b61078c612c1e565b81600073ffffffffffffffffffffffffffffffffffffffff166008600083815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610829906145b3565b60405180910390fd5b816008600085815260200190815260200160002060000181905550827f8aa4fa52648a6d15edce8a179c792c86f3719d0cc3c572cf90f91948f0f2cb688360405161087d91906138b8565b60405180910390a2505050565b61271081565b610898612c1e565b82600073ffffffffffffffffffffffffffffffffffffffff166008600083815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361093e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610935906145b3565b60405180910390fd5b826008600086815260200190815260200160002060030160146101000a81548160ff021916908360028111156109775761097661421d565b5b0217905550600160028111156109905761098f61421d565b5b8360028111156109a3576109a261421d565b5b036109cf5781426109b49190614602565b60086000868152602001908152602001600020600401819055505b837f2057fc9749a78f2ad31dc82932adeec04e46e917f8c0259fc88a96b5021ba462846008600088815260200190815260200160002060040154604051610a17929190614658565b60405180910390a250505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610aac612c1e565b600073ffffffffffffffffffffffffffffffffffffffff166008600087815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b48906146cd565b60405180910390fd5b60008411610b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8b90614739565b60405180910390fd5b60008311610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90614739565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d906147a5565b60405180910390fd5b6040518060c001604052808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200160006002811115610ca957610ca861421d565b5b8152602001600081525060086000878152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160030160146101000a81548160ff02191690836002811115610d9357610d9261421d565b5b021790555060a08201518160040155905050847f94a4a33f89383886c8aba685cd473e5af8e1353e90deaf89aaef7dcd36e310ec85858585604051610ddb94939291906147c5565b60405180910390a25050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e18612c1e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90614856565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f56d8cf44088db71780335dd49b5106c9a97ef139d0989cf4c95ce6a7fff36d5560405160405180910390a250565b610f16612c1e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c906148c2565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f5719a5656c5cfdaafa148ecf366fd3b0a7fae06449ce2a46225977fb7417e29d60405160405180910390a250565b611014612c1e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a9061492e565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f54e4612788f90384e6843298d7854436f3a585b2c3831ab66abf1de63bfa6c2d816040516110f3919061398c565b60405180910390a150565b611106612c1e565b6111106000612c9c565b565b61111a612c1e565b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611165573d6000803e3d6000fd5b5050565b6000611173612ccd565b90508073ffffffffffffffffffffffffffffffffffffffff1661119461295f565b73ffffffffffffffffffffffffffffffffffffffff16146111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e1906149c0565b60405180910390fd5b6111f381612c9c565b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000600860008560000151815260200190815260200160002090506001600281111561124e5761124d61421d565b5b8160030160149054906101000a900460ff1660028111156112725761127161421d565b5b146112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a990614a2c565b60405180910390fd5b80600401544211156112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f090614a98565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3bcbf636040518163ffffffff1660e01b8152600401602060405180830381865afa158015611368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138c9190614acd565b90506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cf088d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114219190614b0f565b9050600061146c87602001518860e001518660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a608001518b60a001518c61010001516122c5565b905080156114b057600160098860e0015160405161148a9190614bb6565b908152602001604051809103902060006101000a81548160ff0219169083151502179055505b600083801561154b57508273ffffffffffffffffffffffffffffffffffffffff166379c7103b89602001516040518263ffffffff1660e01b81526004016114f7919061398c565b602060405180830381865afa158015611514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115389190614be2565b4286600401546115489190614c0f565b11155b806116545750600073ffffffffffffffffffffffffffffffffffffffff168560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611653575060008560020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318a602001516040518263ffffffff1660e01b8152600401611610919061398c565b602060405180830381865afa15801561162d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116519190614be2565b115b5b8061165c5750815b905060008860800151118061167257508760a001515b156116b857816116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae90614c8f565b60405180910390fd5b5b806116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef90614cfb565b60405180910390fd5b600061172289604001518a6060015188600101548c60a0015160018e608001518f60200151612cd5565b90508560030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632a959b898a602001518b606001518c60c001516040518463ffffffff1660e01b815260040161179193929190614d4c565b600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b50505050886020015173ffffffffffffffffffffffffffffffffffffffff1689600001517f90a45abed2cc883f29b168784a0a8bcaa9034a230f8aeabf159fbfea3ff446f78b6060015189600101548d60800151868f60c0015160405161182a959493929190614d83565b60405180910390a3886060015160018a6060015160ff168860030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d49190614be2565b6118de9190614c0f565b6118e89190614602565b8160ff16915097509750505050505050915091565b611905612c1e565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611940919061398c565b602060405180830381865afa15801561195d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119819190614be2565b90506119ae33828473ffffffffffffffffffffffffffffffffffffffff16612e729092919063ffffffff16565b5050565b8282905085859050146119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f190614e22565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ada7d168787878787876040518763ffffffff1660e01b8152600401611a5f9695949392919061505e565b6020604051808303816000875af1158015611a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa29190614acd565b5060005b85859050811015611b8157858582818110611ac457611ac36150bf565b5b9050602002016020810190611ad991906139d3565b73ffffffffffffffffffffffffffffffffffffffff16635efa4943858584818110611b0757611b066150bf565b5b9050602002013589606001518a604001518b60c001516040518563ffffffff1660e01b8152600401611b3c94939291906150ee565b600060405180830381600087803b158015611b5657600080fd5b505af1158015611b6a573d6000803e3d6000fd5b505050508080611b7990615133565b915050611aa6565b507f7df220e157dddb9e4b9e03b14067c78198b4e53199ff519f41f9707ab170d141858585858a60c001518b60400151604051611bc39695949392919061517b565b60405180910390a1611be88660200151600188600001516000808b60a0015133612cd5565b50505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620f424081565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb591906151e7565b600a611cc19190615347565b670de0b6b3a7640000611cd2612ef8565b8789611cde9190614c0f565b611ce89190615392565b611cf29190615392565b611cfc919061541b565b90506000611d098a612fdc565b600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd791906151e7565b600a611de39190615347565b83611dee9190615392565b611df8919061541b565b90506000620f42408983611e0c9190615392565b611e16919061541b565b90506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3bcbf636040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eab9190614acd565b9050808015611eb75750865b15611ffa576000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634cf088d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4f9190614b0f565b905060008173ffffffffffffffffffffffffffffffffffffffff166355c2604b8e8a6040518363ffffffff1660e01b8152600401611f8e92919061544c565b602060405180830381865afa158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf9190614be2565b90506127108185611fe09190615392565b611fea919061541b565b84611ff59190614c0f565b935050505b81945050505050979650505050505050565b612014612c1e565b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f40bddd72ea96b80dae14e3d13e8ce2c4ecd2500d88c6c0004d24a00deab28f9c60405160405180910390a35050565b6120f8612c1e565b81600073ffffffffffffffffffffffffffffffffffffffff166008600083815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361219e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612195906145b3565b60405180910390fd5b816008600085815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16837f709a191b76b2b2aef02983ac940c378a23b898b475080684b15245c08a8a1fd360405160405180910390a3505050565b60086020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160149054906101000a900460ff16908060040154905086565b60006009866040516122d79190614bb6565b908152602001604051809103902060009054906101000a900460ff1615612333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232a906154c1565b60405180910390fd5b81421115612376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236d9061552d565b60405180910390fd5b60006123b1883088888888604051602001612396969594939291906155fe565b604051602081830303815290604052805190602001206130ff565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166123ff888361313590919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16149150509695505050505050565b61242b612c1e565b81600073ffffffffffffffffffffffffffffffffffffffff166008600083815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036124d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c8906145b3565b60405180910390fd5b816008600085815260200190815260200160002060010181905550827fa3de29236e325391037675b0f00d5932cedda388025e2073984d6c36e65a3bd18360405161251c91906138b8565b60405180910390a2505050565b60008060006008600085600001518152602001908152602001600020905060028081111561255a5761255961421d565b5b8160030160149054906101000a900460ff16600281111561257e5761257d61421d565b5b146125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b5906156ba565b60405180910390fd5b6000846080015111806125d257508360a001515b156126995761261e84602001518560e001518360030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687608001518860a001518961010001516122c5565b61265d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265490614c8f565b60405180910390fd5b600160098560e001516040516126739190614bb6565b908152602001604051809103902060006101000a81548160ff0219169083151502179055505b60006126c38560400151866060015184600001548860a0015160018a608001518b60200151612cd5565b90508160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632a959b89866020015187606001518860c001516040518463ffffffff1660e01b815260040161273293929190614d4c565b600060405180830381600087803b15801561274c57600080fd5b505af1158015612760573d6000803e3d6000fd5b50505050846020015173ffffffffffffffffffffffffffffffffffffffff1685600001517fb24aaf95fe048cdee05c58f28965f7c365a1a71f87a2a222ab52bc8e34e01f36876060015185600001548960800151868b60c001516040516127cb959493929190614d83565b60405180910390a384606001516001866060015160ff168460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128759190614be2565b61287f9190614c0f565b6128899190614602565b8160ff169150935093505050915091565b6128a2612c1e565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167ff8db9dc728751015d3265064db34b7f513b556c6630fa0a8335e59ea7f85aef260405160405180910390a250565b6009818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612991612c1e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790615726565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f0d86357156c3a4a58e71746abe87b8b56c50b0becf202b90a80321005493087760405160405180910390a250565b612a8f612c1e565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16612aef611bf1565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612c26612ccd565b73ffffffffffffffffffffffffffffffffffffffff16612c44611bf1565b73ffffffffffffffffffffffffffffffffffffffff1614612c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9190615792565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055612cca81612b5a565b50565b600033905090565b600080612cea89848a60ff168a888a8c611c21565b9050600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603612d3057612d2b81348561315c565b612e63565b60003414612d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6a906157fe565b60405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de491906151e7565b6012612df0919061581e565b905060008214612e6157612e6033600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600a612e2e9190615347565b85612e39919061541b565b8d73ffffffffffffffffffffffffffffffffffffffff16613268909392919063ffffffff16565b5b505b80915050979650505050505050565b612ef38363a9059cbb60e01b8484604051602401612e91929190615852565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506132f1565b505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8c91906158f3565b50505091505060008113612fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fcc906159ba565b60405180910390fd5b8091505090565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015613089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ad91906158f3565b505050915050600081136130f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ed906159ba565b60405180910390fd5b80915050919050565b60007f19457468657265756d205369676e6564204d6573736167653a0a33320000000060005281601c52603c6000209050919050565b600080600061314485856133b9565b915091506131518161340a565b819250505092915050565b8282101561319f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319690615a26565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613207573d6000803e3d6000fd5b5082821115613263578073ffffffffffffffffffffffffffffffffffffffff166108fc84846132369190614c0f565b9081150290604051600060405180830381858888f19350505050158015613261573d6000803e3d6000fd5b505b505050565b6132eb846323b872dd60e01b85858560405160240161328993929190615a46565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506132f1565b50505050565b6000613353826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166135709092919063ffffffff16565b90506000815114806133755750808060200190518101906133749190614acd565b5b6133b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ab90615aef565b60405180910390fd5b505050565b60008060418351036133fa5760008060006020860151925060408601519150606086015160001a90506133ee87828585613588565b94509450505050613403565b60006002915091505b9250929050565b6000600481111561341e5761341d61421d565b5b8160048111156134315761343061421d565b5b031561356d576001600481111561344b5761344a61421d565b5b81600481111561345e5761345d61421d565b5b0361349e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349590615b5b565b60405180910390fd5b600260048111156134b2576134b161421d565b5b8160048111156134c5576134c461421d565b5b03613505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134fc90615bc7565b60405180910390fd5b600360048111156135195761351861421d565b5b81600481111561352c5761352b61421d565b5b0361356c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356390615c59565b60405180910390fd5b5b50565b606061357f848460008561366a565b90509392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c11156135c3576000600391509150613661565b6000600187878787604051600081526020016040526040516135e89493929190615ca1565b6020604051602081039080840390855afa15801561360a573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361365857600060019250925050613661565b80600092509250505b94509492505050565b6060824710156136af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a690615d58565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516136d89190614bb6565b60006040518083038185875af1925050503d8060008114613715576040519150601f19603f3d011682016040523d82523d6000602084013e61371a565b606091505b509150915061372b87838387613737565b92505050949350505050565b6060831561379957600083510361379157613751856137ac565b613790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378790615dc4565b60405180910390fd5b5b8290506137a4565b6137a383836137cf565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156137e25781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138169190615e28565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61384681613833565b811461385157600080fd5b50565b6000813590506138638161383d565b92915050565b600080604083850312156138805761387f613829565b5b600061388e85828601613854565b925050602061389f85828601613854565b9150509250929050565b6138b281613833565b82525050565b60006020820190506138cd60008301846138a9565b92915050565b600381106138e057600080fd5b50565b6000813590506138f2816138d3565b92915050565b60008060006060848603121561391157613910613829565b5b600061391f86828701613854565b9350506020613930868287016138e3565b925050604061394186828701613854565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139768261394b565b9050919050565b6139868161396b565b82525050565b60006020820190506139a1600083018461397d565b92915050565b6139b08161396b565b81146139bb57600080fd5b50565b6000813590506139cd816139a7565b92915050565b6000602082840312156139e9576139e8613829565b5b60006139f7848285016139be565b91505092915050565b600080600080600060a08688031215613a1c57613a1b613829565b5b6000613a2a88828901613854565b9550506020613a3b88828901613854565b9450506040613a4c88828901613854565b9350506060613a5d888289016139be565b9250506080613a6e888289016139be565b9150509295509295909350565b6000613a868261394b565b9050919050565b613a9681613a7b565b8114613aa157600080fd5b50565b600081359050613ab381613a8d565b92915050565b600060208284031215613acf57613ace613829565b5b6000613add84828501613aa4565b91505092915050565b613aef81613a7b565b82525050565b6000602082019050613b0a6000830184613ae6565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613b5e82613b15565b810181811067ffffffffffffffff82111715613b7d57613b7c613b26565b5b80604052505050565b6000613b9061381f565b9050613b9c8282613b55565b919050565b600080fd5b600060ff82169050919050565b613bbc81613ba6565b8114613bc757600080fd5b50565b600081359050613bd981613bb3565b92915050565b60008115159050919050565b613bf481613bdf565b8114613bff57600080fd5b50565b600081359050613c1181613beb565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff821115613c3c57613c3b613b26565b5b613c4582613b15565b9050602081019050919050565b82818337600083830152505050565b6000613c74613c6f84613c21565b613b86565b905082815260208101848484011115613c9057613c8f613c1c565b5b613c9b848285613c52565b509392505050565b600082601f830112613cb857613cb7613c17565b5b8135613cc8848260208601613c61565b91505092915050565b60006101208284031215613ce857613ce7613b10565b5b613cf3610120613b86565b90506000613d0384828501613854565b6000830152506020613d17848285016139be565b6020830152506040613d2b848285016139be565b6040830152506060613d3f84828501613bca565b6060830152506080613d5384828501613854565b60808301525060a0613d6784828501613c02565b60a08301525060c0613d7b84828501613854565b60c08301525060e082013567ffffffffffffffff811115613d9f57613d9e613ba1565b5b613dab84828501613ca3565b60e083015250610100613dc084828501613854565b6101008301525092915050565b600060208284031215613de357613de2613829565b5b600082013567ffffffffffffffff811115613e0157613e0061382e565b5b613e0d84828501613cd1565b91505092915050565b6000604082019050613e2b60008301856138a9565b613e3860208301846138a9565b9392505050565b600060e08284031215613e5557613e54613b10565b5b613e5f60e0613b86565b90506000613e6f84828501613854565b6000830152506020613e83848285016139be565b6020830152506040613e9784828501613854565b6040830152506060613eab84828501613854565b6060830152506080613ebf84828501613854565b60808301525060a0613ed384828501613854565b60a08301525060c0613ee7848285016139be565b60c08301525092915050565b600080fd5b600080fd5b60008083601f840112613f1357613f12613c17565b5b8235905067ffffffffffffffff811115613f3057613f2f613ef3565b5b602083019150836020820283011115613f4c57613f4b613ef8565b5b9250929050565b60008083601f840112613f6957613f68613c17565b5b8235905067ffffffffffffffff811115613f8657613f85613ef3565b5b602083019150836020820283011115613fa257613fa1613ef8565b5b9250929050565b6000806000806000806101408789031215613fc757613fc6613829565b5b6000613fd589828a01613e3f565b96505060e087013567ffffffffffffffff811115613ff657613ff561382e565b5b61400289828a01613efd565b955095505061010087013567ffffffffffffffff8111156140265761402561382e565b5b61403289828a01613f53565b935093505061012087013567ffffffffffffffff8111156140565761405561382e565b5b61406289828a01613ca3565b9150509295509295509295565b600080600080600080600060e0888a03121561408e5761408d613829565b5b600061409c8a828b016139be565b97505060206140ad8a828b016139be565b96505060406140be8a828b01613854565b95505060606140cf8a828b01613854565b94505060806140e08a828b01613854565b93505060a06140f18a828b01613c02565b92505060c06141028a828b01613c02565b91505092959891949750929550565b6000806040838503121561412857614127613829565b5b6000614136858286016139be565b9250506020614147858286016139be565b9150509250929050565b6000806040838503121561416857614167613829565b5b600061417685828601613854565b9250506020614187858286016139be565b9150509250929050565b6000602082840312156141a7576141a6613829565b5b60006141b584828501613854565b91505092915050565b6000819050919050565b60006141e36141de6141d98461394b565b6141be565b61394b565b9050919050565b60006141f5826141c8565b9050919050565b6000614207826141ea565b9050919050565b614217816141fc565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6003811061425d5761425c61421d565b5b50565b600081905061426e8261424c565b919050565b600061427e82614260565b9050919050565b61428e81614273565b82525050565b600060c0820190506142a960008301896138a9565b6142b660208301886138a9565b6142c3604083018761397d565b6142d0606083018661420e565b6142dd6080830185614285565b6142ea60a08301846138a9565b979650505050505050565b60008060008060008060c0878903121561431257614311613829565b5b600061432089828a016139be565b965050602087013567ffffffffffffffff8111156143415761434061382e565b5b61434d89828a01613ca3565b955050604061435e89828a016139be565b945050606061436f89828a01613854565b935050608061438089828a01613c02565b92505060a061439189828a01613854565b9150509295509295509295565b6143a781613bdf565b82525050565b60006020820190506143c2600083018461439e565b92915050565b600061012082840312156143df576143de613b10565b5b6143ea610120613b86565b905060006143fa84828501613854565b600083015250602061440e848285016139be565b6020830152506040614422848285016139be565b604083015250606061443684828501613bca565b606083015250608061444a84828501613854565b60808301525060a061445e84828501613c02565b60a08301525060c061447284828501613854565b60c08301525060e082013567ffffffffffffffff81111561449657614495613ba1565b5b6144a284828501613ca3565b60e0830152506101006144b784828501613854565b6101008301525092915050565b6000602082840312156144da576144d9613829565b5b600082013567ffffffffffffffff8111156144f8576144f761382e565b5b614504848285016143c8565b91505092915050565b60006020828403121561452357614522613829565b5b600082013567ffffffffffffffff8111156145415761454061382e565b5b61454d84828501613ca3565b91505092915050565b600082825260208201905092915050565b7f43726f776473616c653a206e6f74206578697374730000000000000000000000600082015250565b600061459d601583614556565b91506145a882614567565b602082019050919050565b600060208201905081810360008301526145cc81614590565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061460d82613833565b915061461883613833565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561464d5761464c6145d3565b5b828201905092915050565b600060408201905061466d6000830185614285565b61467a60208301846138a9565b9392505050565b7f43726f776473616c653a20616c72656164792065786973747300000000000000600082015250565b60006146b7601983614556565b91506146c282614681565b602082019050919050565b600060208201905081810360008301526146e6816146aa565b9050919050565b7f43726f776473616c653a207a65726f5f70726963650000000000000000000000600082015250565b6000614723601583614556565b915061472e826146ed565b602082019050919050565b6000602082019050818103600083015261475281614716565b9050919050565b7f43726f776473616c653a207a65726f5f61646472657373000000000000000000600082015250565b600061478f601783614556565b915061479a82614759565b602082019050919050565b600060208201905081810360008301526147be81614782565b9050919050565b60006080820190506147da60008301876138a9565b6147e760208301866138a9565b6147f4604083018561397d565b614801606083018461397d565b95945050505050565b7f5465616d3a207a65726f5f616464726573730000000000000000000000000000600082015250565b6000614840601283614556565b915061484b8261480a565b602082019050919050565b6000602082019050818103600083015261486f81614833565b9050919050565b7f5369676e65723a207a65726f5f61646472657373000000000000000000000000600082015250565b60006148ac601483614556565b91506148b782614876565b602082019050919050565b600060208201905081810360008301526148db8161489f565b9050919050565b7f41646d696e3a207a65726f206164647265737300000000000000000000000000600082015250565b6000614918601383614556565b9150614923826148e2565b602082019050919050565b600060208201905081810360008301526149478161490b565b9050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b60006149aa602983614556565b91506149b58261494e565b604082019050919050565b600060208201905081810360008301526149d98161499d565b9050919050565b7f43726f776473616c653a206e6f7420696e2070726573616c6520706861736500600082015250565b6000614a16601f83614556565b9150614a21826149e0565b602082019050919050565b60006020820190508181036000830152614a4581614a09565b9050919050565b7f43726f776473616c653a2070726573616c652065787069726564000000000000600082015250565b6000614a82601a83614556565b9150614a8d82614a4c565b602082019050919050565b60006020820190508181036000830152614ab181614a75565b9050919050565b600081519050614ac781613beb565b92915050565b600060208284031215614ae357614ae2613829565b5b6000614af184828501614ab8565b91505092915050565b600081519050614b09816139a7565b92915050565b600060208284031215614b2557614b24613829565b5b6000614b3384828501614afa565b91505092915050565b600081519050919050565b600081905092915050565b60005b83811015614b70578082015181840152602081019050614b55565b83811115614b7f576000848401525b50505050565b6000614b9082614b3c565b614b9a8185614b47565b9350614baa818560208601614b52565b80840191505092915050565b6000614bc28284614b85565b915081905092915050565b600081519050614bdc8161383d565b92915050565b600060208284031215614bf857614bf7613829565b5b6000614c0684828501614bcd565b91505092915050565b6000614c1a82613833565b9150614c2583613833565b925082821015614c3857614c376145d3565b5b828203905092915050565b7f43726f776473616c653a20696e76616c6964207369676e617475726500000000600082015250565b6000614c79601c83614556565b9150614c8482614c43565b602082019050919050565b60006020820190508181036000830152614ca881614c6c565b9050919050565b7f43726f776473616c653a206e6f742077686974656c6973746564000000000000600082015250565b6000614ce5601a83614556565b9150614cf082614caf565b602082019050919050565b60006020820190508181036000830152614d1481614cd8565b9050919050565b6000614d36614d31614d2c84613ba6565b6141be565b613833565b9050919050565b614d4681614d1b565b82525050565b6000606082019050614d61600083018661397d565b614d6e6020830185614d3d565b614d7b60408301846138a9565b949350505050565b600060a082019050614d986000830188614d3d565b614da560208301876138a9565b614db260408301866138a9565b614dbf60608301856138a9565b614dcc60808301846138a9565b9695505050505050565b7f43726f776473616c653a20696e76616c696420696e7075740000000000000000600082015250565b6000614e0c601883614556565b9150614e1782614dd6565b602082019050919050565b60006020820190508181036000830152614e3b81614dff565b9050919050565b614e4b81613833565b82525050565b614e5a8161396b565b82525050565b60e082016000820151614e766000850182614e42565b506020820151614e896020850182614e51565b506040820151614e9c6040850182614e42565b506060820151614eaf6060850182614e42565b506080820151614ec26080850182614e42565b5060a0820151614ed560a0850182614e42565b5060c0820151614ee860c0850182614e51565b50505050565b600082825260208201905092915050565b6000819050919050565b6000614f158383614e51565b60208301905092915050565b6000614f3060208401846139be565b905092915050565b6000602082019050919050565b6000614f518385614eee565b9350614f5c82614eff565b8060005b85811015614f9557614f728284614f21565b614f7c8882614f09565b9750614f8783614f38565b925050600181019050614f60565b5085925050509392505050565b600082825260208201905092915050565b600080fd5b6000614fc48385614fa2565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614ff757614ff6614fb3565b5b602083029250615008838584613c52565b82840190509392505050565b600082825260208201905092915050565b600061503082614b3c565b61503a8185615014565b935061504a818560208601614b52565b61505381613b15565b840191505092915050565b6000610140820190506150746000830189614e60565b81810360e0830152615087818789614f45565b905081810361010083015261509d818587614fb8565b90508181036101208301526150b28184615025565b9050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060808201905061510360008301876138a9565b61511060208301866138a9565b61511d60408301856138a9565b61512a606083018461397d565b95945050505050565b600061513e82613833565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151705761516f6145d3565b5b600182019050919050565b6000608082019050818103600083015261519681888a614f45565b905081810360208301526151ab818688614fb8565b90506151ba604083018561397d565b6151c760608301846138a9565b979650505050505050565b6000815190506151e181613bb3565b92915050565b6000602082840312156151fd576151fc613829565b5b600061520b848285016151d2565b91505092915050565b60008160011c9050919050565b6000808291508390505b600185111561526b57808604811115615247576152466145d3565b5b60018516156152565780820291505b808102905061526485615214565b945061522b565b94509492505050565b6000826152845760019050615340565b816152925760009050615340565b81600181146152a857600281146152b2576152e1565b6001915050615340565b60ff8411156152c4576152c36145d3565b5b8360020a9150848211156152db576152da6145d3565b5b50615340565b5060208310610133831016604e8410600b84101617156153165782820a905083811115615311576153106145d3565b5b615340565b6153238484846001615221565b9250905081840481111561533a576153396145d3565b5b81810290505b9392505050565b600061535282613833565b915061535d83613ba6565b925061538a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484615274565b905092915050565b600061539d82613833565b91506153a883613833565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153e1576153e06145d3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061542682613833565b915061543183613833565b925082615441576154406153ec565b5b828204905092915050565b6000604082019050615461600083018561397d565b61546e602083018461439e565b9392505050565b7f43726f776473616c653a207369676e6174757265207573656400000000000000600082015250565b60006154ab601983614556565b91506154b682615475565b602082019050919050565b600060208201905081810360008301526154da8161549e565b9050919050565b7f43726f776473616c653a207369676e6174757265206578706972656400000000600082015250565b6000615517601c83614556565b9150615522826154e1565b602082019050919050565b600060208201905081810360008301526155468161550a565b9050919050565b60008160601b9050919050565b60006155658261554d565b9050919050565b60006155778261555a565b9050919050565b61558f61558a8261396b565b61556c565b82525050565b6000819050919050565b6155b06155ab82613833565b615595565b82525050565b60008160f81b9050919050565b60006155ce826155b6565b9050919050565b60006155e0826155c3565b9050919050565b6155f86155f382613bdf565b6155d5565b82525050565b600061560a828961557e565b60148201915061561a828861557e565b60148201915061562a828761557e565b60148201915061563a828661559f565b60208201915061564a82856155e7565b60018201915061565a828461559f565b602082019150819050979650505050505050565b7f43726f776473616c653a206e6f7420696e2073616c6520706861736500000000600082015250565b60006156a4601c83614556565b91506156af8261566e565b602082019050919050565b600060208201905081810360008301526156d381615697565b9050919050565b7f52656465656d3a207a65726f5f61646472657373000000000000000000000000600082015250565b6000615710601483614556565b915061571b826156da565b602082019050919050565b6000602082019050818103600083015261573f81615703565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061577c602083614556565b915061578782615746565b602082019050919050565b600060208201905081810360008301526157ab8161576f565b9050919050565b7f43726f776473616c653a206e6f74206163636570742065746865720000000000600082015250565b60006157e8601b83614556565b91506157f3826157b2565b602082019050919050565b60006020820190508181036000830152615817816157db565b9050919050565b600061582982613ba6565b915061583483613ba6565b925082821015615847576158466145d3565b5b828203905092915050565b6000604082019050615867600083018561397d565b61587460208301846138a9565b9392505050565b600069ffffffffffffffffffff82169050919050565b61589a8161587b565b81146158a557600080fd5b50565b6000815190506158b781615891565b92915050565b6000819050919050565b6158d0816158bd565b81146158db57600080fd5b50565b6000815190506158ed816158c7565b92915050565b600080600080600060a0868803121561590f5761590e613829565b5b600061591d888289016158a8565b955050602061592e888289016158de565b945050604061593f88828901614bcd565b935050606061595088828901614bcd565b9250506080615961888289016158a8565b9150509295509295909350565b7f6e65676174697665207072696365000000000000000000000000000000000000600082015250565b60006159a4600e83614556565b91506159af8261596e565b602082019050919050565b600060208201905081810360008301526159d381615997565b9050919050565b7f5061796d656e743a206e6f7420656e6f7567682066756e64732073656e740000600082015250565b6000615a10601e83614556565b9150615a1b826159da565b602082019050919050565b60006020820190508181036000830152615a3f81615a03565b9050919050565b6000606082019050615a5b600083018661397d565b615a68602083018561397d565b615a7560408301846138a9565b949350505050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000615ad9602a83614556565b9150615ae482615a7d565b604082019050919050565b60006020820190508181036000830152615b0881615acc565b9050919050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000615b45601883614556565b9150615b5082615b0f565b602082019050919050565b60006020820190508181036000830152615b7481615b38565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000615bb1601f83614556565b9150615bbc82615b7b565b602082019050919050565b60006020820190508181036000830152615be081615ba4565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000615c43602283614556565b9150615c4e82615be7565b604082019050919050565b60006020820190508181036000830152615c7281615c36565b9050919050565b6000819050919050565b615c8c81615c79565b82525050565b615c9b81613ba6565b82525050565b6000608082019050615cb66000830187615c83565b615cc36020830186615c92565b615cd06040830185615c83565b615cdd6060830184615c83565b95945050505050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000615d42602683614556565b9150615d4d82615ce6565b604082019050919050565b60006020820190508181036000830152615d7181615d35565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000615dae601d83614556565b9150615db982615d78565b602082019050919050565b60006020820190508181036000830152615ddd81615da1565b9050919050565b600081519050919050565b6000615dfa82615de4565b615e048185614556565b9350615e14818560208601614b52565b615e1d81613b15565b840191505092915050565b60006020820190508181036000830152615e428184615def565b90509291505056fea26469706673582212201bbe31e1e34ed5b716117564a04d5db3da68ca720dc7bc02232206a33f50b46064736f6c634300080f0033000000000000000000000000ea4febb9fac2ee42167f41e05bce3a4f636ce494000000000000000000000000e24ac21ca418873357bdffb3ab9318cb6d07ef780000000000000000000000001eddae1c6248317d41601b5c1a9d7dae7c71e1fa000000000000000000000000b628d2272498d394ec956d0d3579976e3ff5fa1e