0 txs
125 calls
constructor
constructor()
functions
advancedAmlLimit
viewfunction advancedAmlLimit() view returns (uint256)
advancedAmlScoreLimit
viewfunction advancedAmlScoreLimit() view returns (uint256)
advancedKycLimit
viewfunction advancedKycLimit() view returns (uint256)
backendSigner
viewfunction backendSigner() view returns (address)
baseAmlLimit
viewfunction baseAmlLimit() view returns (uint256)
baseAmlScoreLimit
viewfunction baseAmlScoreLimit() view returns (uint256)
baseKycLimit
viewfunction baseKycLimit() view returns (uint256)
getSpendingHistory
viewfunction getSpendingHistory(address _user) view returns (tuple[])
getTotalSpending
viewfunction getTotalSpending(address _user) view returns (uint256)
getTreasureConfiguration
viewfunction getTreasureConfiguration() view returns (address firstTreasure, address secondTreasure, uint256 firstTreasurePercentage, uint256 secondTreasurePercentage)
getVerification
viewfunction getVerification(address _user) view returns (tuple)
owner
viewfunction owner() view returns (address)
treasureFirstAddress
viewfunction treasureFirstAddress() view returns (address)
treasureFirstPercentage
viewfunction treasureFirstPercentage() view returns (uint256)
treasureSecondAddress
viewfunction treasureSecondAddress() view returns (address)
treasureSecondPercentage
viewfunction treasureSecondPercentage() view returns (uint256)
validateSpending
viewfunction validateSpending(address _user, uint256 _amount) view
addAllowedContract
nonpayablefunction addAllowedContract(address _contractAddress)
initialize
nonpayablefunction initialize(address _backendSigner, address[] _allowedContracts, address _owner)
recordSpending
nonpayablefunction recordSpending(address _user, uint256 _amount)
removeAllowedContract
nonpayablefunction removeAllowedContract(address _contractAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
setAdvancedAMLScore
nonpayablefunction setAdvancedAMLScore(address _user, uint256 _advancedAMLScore, uint256 _timestamp, bytes _signature)
setAdvancedKyc
nonpayablefunction setAdvancedKyc(address _user, bool _advancedKyc, uint256 _timestamp, bytes _signature)
setBackendSigner
nonpayablefunction setBackendSigner(address _newSigner)
setBaseAMLScore
nonpayablefunction setBaseAMLScore(address _user, uint256 _baseAMLScore, uint256 _timestamp, bytes _signature)
setBaseKyc
nonpayablefunction setBaseKyc(address _user, bool _baseKyc, uint256 _timestamp, bytes _signature)
setTreasureConfiguration
nonpayablefunction setTreasureConfiguration(address _treasureFirstAddress, address _treasureSecondAddress, uint256 _treasureFirstPercentage, uint256 _treasureSecondPercentage)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateAMLScoreLimits
nonpayablefunction updateAMLScoreLimits(uint256 _baseAmlScoreLimit, uint256 _advancedAmlScoreLimit)
updateSpendingLimits
nonpayablefunction updateSpendingLimits(uint256 _baseAmlLimit, uint256 _advancedAmlLimit, uint256 _baseKycLimit, uint256 _advancedKycLimit)
verifySignaturePublic
nonpayablefunction verifySignaturePublic(bytes32 _messageHash, bytes _signature)
events
AdvancedAMLScoreUpdated
event AdvancedAMLScoreUpdated(address indexed user, uint256 advancedAMLScore)
AdvancedKycUpdated
event AdvancedKycUpdated(address indexed user, bool advancedKyc)
AMLScoreLimitsUpdated
event AMLScoreLimitsUpdated(uint256 baseAmlScoreLimit, uint256 advancedAmlScoreLimit)
BackendSignerChanged
event BackendSignerChanged(address newBackendSigner)
BaseAMLScoreUpdated
event BaseAMLScoreUpdated(address indexed user, uint256 baseAMLScore)
BaseKycUpdated
event BaseKycUpdated(address indexed user, bool baseKyc)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SpendingLimitsUpdated
event SpendingLimitsUpdated(uint256 baseAmlLimit, uint256 advancedAmlLimit, uint256 baseKycLimit, uint256 advancedKycLimit)
SpendingRecorded
event SpendingRecorded(address indexed user, uint256 amount, address indexed contractAddress)
TreasureConfigurationUpdated
event TreasureConfigurationUpdated(address treasureFirstAddress, address treasureSecondAddress, uint256 treasureFirstPercentage, uint256 treasureSecondPercentage)
errors
AMLKYCCheckFailed
error AMLKYCCheckFailed()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
InvalidAddress
error InvalidAddress()
InvalidConfiguration
error InvalidConfiguration()
InvalidInitialization
error InvalidInitialization()
InvalidMessageHash
error InvalidMessageHash()
InvalidSigner
error InvalidSigner()
NotAllowedContract
error NotAllowedContract()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x608060405234801561000f575f5ffd5b5061001e61002360201b60201c565b610183565b5f61003261012160201b60201c565b9050805f0160089054906101000a900460ff161561007c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff161461011e5767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff604051610115919061016a565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b61016481610148565b82525050565b5f60208201905061017d5f83018461015b565b92915050565b6131c0806101905f395ff3fe608060405234801561000f575f5ffd5b50600436106101ee575f3560e01c80637809b47b1161010d578063cb0cdd47116100a0578063ee40cb171161006f578063ee40cb1714610545578063f0dd327514610561578063f2fde38b1461057f578063fe60eccb1461059b576101ee565b8063cb0cdd47146104bf578063d6ac303c146104ef578063dc5b68a61461050d578063dc6f231e14610529576101ee565b80639800fc16116100dc5780639800fc161461044b5780639a12234314610467578063adea2cb514610485578063af23aa26146104a3576101ee565b80637809b47b146103c057806379970fd5146103e15780637fc9592d146103fd5780638da5cb5b1461042d576101ee565b8063568bbf2c116101855780636be3ecf0116101545780636be3ecf01461035e5780636c7c4d861461037a578063715018a61461039857806375b0f33d146103a2576101ee565b8063568bbf2c146102ec57806361597eab1461030857806365d65e86146103245780636873579014610342576101ee565b80633676da28116101c15780633676da281461027857806336f95670146102965780633c38ca34146102b25780633d268804146102ce576101ee565b80630a3f9bca146101f2578063200230a2146102225780632c56462f1461024057806334dfbfee1461025c575b5f5ffd5b61020c60048036038101906102079190612424565b6105b9565b6040516102199190612467565b60405180910390f35b61022a6105ff565b6040516102379190612467565b60405180910390f35b61025a60048036038101906102559190612424565b610605565b005b610276600480360381019061027191906124aa565b6106ca565b005b6102806108f4565b60405161028d9190612467565b60405180910390f35b6102b060048036038101906102ab9190612424565b6108fa565b005b6102cc60048036038101906102c79190612657565b6109e0565b005b6102d6610a24565b6040516102e39190612467565b60405180910390f35b610306600480360381019061030191906126b1565b610a2a565b005b610322600480360381019061031d91906124aa565b610be5565b005b61032c610eaf565b6040516103399190612724565b60405180910390f35b61035c6004803603810190610357919061273d565b610ed3565b005b610378600480360381019061037391906127a1565b610f88565b005b61038261108f565b60405161038f9190612724565b60405180910390f35b6103a06110b4565b005b6103aa6110c7565b6040516103b79190612467565b60405180910390f35b6103c86110cd565b6040516103d89493929190612821565b60405180910390f35b6103fb60048036038101906103f69190612864565b611129565b005b61041760048036038101906104129190612424565b6111c2565b604051610424919061291e565b60405180910390f35b610435611260565b6040516104429190612724565b60405180910390f35b61046560048036038101906104609190612424565b611295565b005b61046f6112ec565b60405161047c9190612467565b60405180910390f35b61048d6112f2565b60405161049a9190612467565b60405180910390f35b6104bd60048036038101906104b89190612961565b6112f8565b005b6104d960048036038101906104d49190612424565b611411565b6040516104e69190612ad8565b60405180910390f35b6104f7611512565b6040516105049190612467565b60405180910390f35b61052760048036038101906105229190612bbc565b611518565b005b610543600480360381019061053e9190612961565b611889565b005b61055f600480360381019061055a91906127a1565b6119a1565b005b610569611aa8565b6040516105769190612724565b60405180910390f35b61059960048036038101906105949190612424565b611acd565b005b6105a3611b51565b6040516105b09190612467565b60405180910390f35b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600a5481565b61060d611b57565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610672576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661074a576040517f9ca8c9a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107969190612c55565b92505081905550600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060405180606001604052808381526020014281526020013373ffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f0155602082015181600101556040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167ff882291808faa9c7bc4091e2d57a4b5d2dc9800f3877d6b716768a9c4a2c8e11836040516108e89190612467565b60405180910390a35050565b60055481565b610902611b57565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610967576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1a0e466d4f6247f72c5a57a3478faaefe157d8203dad62b009269044b69ef3db816040516109d59190612724565b60405180910390a150565b6109ea8282611bde565b610a20576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60075481565b610a32611b57565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610a9757505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610ace576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108183610add9190612c55565b14610b14576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600381905550806004819055507ff856cd5be8e903f0d8b6a168ebe2a92597aa52fc2f37fcc9b11878f7117b3dc684848484604051610bd79493929190612821565b60405180910390a150505050565b5f610bef83611cd3565b82610bfa9190612c55565b90505f600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f82015f9054906101000a900460ff161515151581526020015f820160019054906101000a900460ff161515151581526020016001820154815260200160028201548152505090506008548210610cf85780602001511580610cae5750600a54816060015110155b80610cbc57505f8160600151145b15610cf3576040517f30a01a0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ea9565b6007548210610d9f57805f0151158015610d1457508060200151155b15610d4b576040517f30a01a0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a548160600151101580610d6357505f8160600151145b15610d9a576040517f30a01a0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ea8565b6006548210610dfc57600a548160600151101580610dc057505f8160600151145b15610df7576040517f30a01a0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ea7565b6005548210610ea6575f81606001511115610e5557600a54816060015110610e50576040517f30a01a0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ea5565b6009548160400151101580610e6d57505f8160400151145b15610ea4576040517f30a01a0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5b5b5b50505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610edb611b57565b82841180610ee857508183115b80610ef257508082115b15610f29576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836005819055508260068190555081600781905550806008819055507f12e4556dd0dbf52d30b8391c64d7a26abf3202153bfc9d49d312afb0576b4a9684848484604051610f7a9493929190612c88565b60405180910390a150505050565b610fc03085858546604051602001610fa4959493929190612d25565b6040516020818303038152906040528051906020012082611bde565b610ff6576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201819055508373ffffffffffffffffffffffffffffffffffffffff167fe76a20e104efdd9868d93f605e1dc8eed788467f074875168278c88b055b589b846040516110819190612467565b60405180910390a250505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110bc611b57565b6110c55f611e7a565b565b60035481565b5f5f5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600354600454935093509350935090919293565b611131611b57565b60648211806111405750606481115b15611177576040517fc52a9bd300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160098190555080600a819055507fccb13b28dac815aab325fbd29017cd107dcc966481e73a0f468f1bd57fee03ef82826040516111b6929190612d89565b60405180910390a15050565b6111ca612391565b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060800160405290815f82015f9054906101000a900460ff161515151581526020015f820160019054906101000a900460ff16151515158152602001600182015481526020016002820154815250509050919050565b5f5f61126a611f4b565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b61129d611b57565b600f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905550565b60085481565b60045481565b6113303085858546604051602001611314959493929190612e09565b6040516020818303038152906040528051906020012082611bde565b611366576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0160016101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f31ce47fcbca17fe4b72d2cc13e796de2fb883b4c58c5dc9b6fe1cb90ccb9e23d846040516114039190612e6d565b60405180910390a250505050565b6060600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015611507578382905f5260205f2090600302016040518060600160405290815f820154815260200160018201548152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061146f565b505050509050919050565b60065481565b5f611521611f72565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff161480156115695750825b90505f60018367ffffffffffffffff1614801561159c57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156115aa575080155b156115e1576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561162e576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603611693576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169c86611f99565b875f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550624c4b406005819055506302faf0806006819055506305f5e100600781905550630bebc20060088190555060326009819055506032600a819055505f875190505f5f90505b81811015611823575f73ffffffffffffffffffffffffffffffffffffffff1689828151811061175257611751612e86565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036117a7576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600f5f8b84815181106117bf576117be612e86565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611720565b5050831561187f575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516118769190612f08565b60405180910390a15b5050505050505050565b6118c130858585466040516020016118a5959493929190612f6b565b6040516020818303038152906040528051906020012082611bde565b6118f7576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f50394fcbcd3f4d865b2cec371ad1f1eeab4c6e6fe4ca21bc5085e481052a570f846040516119939190612e6d565b60405180910390a250505050565b6119d930858585466040516020016119bd959493929190613019565b6040516020818303038152906040528051906020012082611bde565b611a0f576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055508373ffffffffffffffffffffffffffffffffffffffff167ffc37645ddae88ec54c29e0799040769b0dc268db1299df8f1a7010ae7c24d8c284604051611a9a9190612467565b60405180910390a250505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ad5611b57565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b45575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611b3c9190612724565b60405180910390fd5b611b4e81611e7a565b50565b60095481565b611b5f611fad565b73ffffffffffffffffffffffffffffffffffffffff16611b7d611260565b73ffffffffffffffffffffffffffffffffffffffff1614611bdc57611ba0611fad565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611bd39190612724565b60405180910390fd5b565b5f600b5f8481526020019081526020015f205f9054906101000a900460ff1615611c34576040517f8b56642d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600b5f8581526020019081526020015f205f6101000a81548160ff0219169083151502179055505f611c6784611fb4565b90505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611cb38483611fe790919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff161491505092915050565b5f5f5f90505f600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015611dcd578382905f5260205f2090600302016040518060600160405290815f820154815260200160018201548152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611d35565b5050505090505f815190505f8190505b5f811115611e6e576201518083600183611df7919061307d565b81518110611e0857611e07612e86565b5b60200260200101516020015142611e1f919061307d565b11611e6e5782600182611e32919061307d565b81518110611e4357611e42612e86565b5b60200260200101515f015184611e599190612c55565b93508080611e66906130b0565b915050611ddd565b50829350505050919050565b5f611e83611f4b565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b611fa1612011565b611faa81612051565b50565b5f33905090565b5f7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f5281601c52603c5f209050919050565b5f5f5f5f611ff586866120d5565b925092509250612005828261212a565b82935050505092915050565b61201961228c565b61204f576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612059612011565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120c9575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016120c09190612724565b60405180910390fd5b6120d281611e7a565b50565b5f5f5f6041845103612115575f5f5f602087015192506040870151915060608701515f1a9050612107888285856122aa565b955095509550505050612123565b5f600285515f1b9250925092505b9250925092565b5f600381111561213d5761213c6130d7565b5b8260038111156121505761214f6130d7565b5b0315612288576001600381111561216a576121696130d7565b5b82600381111561217d5761217c6130d7565b5b036121b4576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156121c8576121c76130d7565b5b8260038111156121db576121da6130d7565b5b0361221f57805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016122169190612467565b60405180910390fd5b600380811115612232576122316130d7565b5b826003811115612245576122446130d7565b5b0361228757806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161227e9190613113565b60405180910390fd5b5b5050565b5f612295611f72565b5f0160089054906101000a900460ff16905090565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156122e6575f600385925092509250612387565b5f6001888888886040515f81526020016040526040516123099493929190613147565b6020604051602081039080840390855afa158015612329573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361237a575f60015f5f1b93509350935050612387565b805f5f5f1b935093509350505b9450945094915050565b60405180608001604052805f151581526020015f151581526020015f81526020015f81525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123f3826123ca565b9050919050565b612403816123e9565b811461240d575f5ffd5b50565b5f8135905061241e816123fa565b92915050565b5f60208284031215612439576124386123c2565b5b5f61244684828501612410565b91505092915050565b5f819050919050565b6124618161244f565b82525050565b5f60208201905061247a5f830184612458565b92915050565b6124898161244f565b8114612493575f5ffd5b50565b5f813590506124a481612480565b92915050565b5f5f604083850312156124c0576124bf6123c2565b5b5f6124cd85828601612410565b92505060206124de85828601612496565b9150509250929050565b5f819050919050565b6124fa816124e8565b8114612504575f5ffd5b50565b5f81359050612515816124f1565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61256982612523565b810181811067ffffffffffffffff8211171561258857612587612533565b5b80604052505050565b5f61259a6123b9565b90506125a68282612560565b919050565b5f67ffffffffffffffff8211156125c5576125c4612533565b5b6125ce82612523565b9050602081019050919050565b828183375f83830152505050565b5f6125fb6125f6846125ab565b612591565b9050828152602081018484840111156126175761261661251f565b5b6126228482856125db565b509392505050565b5f82601f83011261263e5761263d61251b565b5b813561264e8482602086016125e9565b91505092915050565b5f5f6040838503121561266d5761266c6123c2565b5b5f61267a85828601612507565b925050602083013567ffffffffffffffff81111561269b5761269a6123c6565b5b6126a78582860161262a565b9150509250929050565b5f5f5f5f608085870312156126c9576126c86123c2565b5b5f6126d687828801612410565b94505060206126e787828801612410565b93505060406126f887828801612496565b925050606061270987828801612496565b91505092959194509250565b61271e816123e9565b82525050565b5f6020820190506127375f830184612715565b92915050565b5f5f5f5f60808587031215612755576127546123c2565b5b5f61276287828801612496565b945050602061277387828801612496565b935050604061278487828801612496565b925050606061279587828801612496565b91505092959194509250565b5f5f5f5f608085870312156127b9576127b86123c2565b5b5f6127c687828801612410565b94505060206127d787828801612496565b93505060406127e887828801612496565b925050606085013567ffffffffffffffff811115612809576128086123c6565b5b6128158782880161262a565b91505092959194509250565b5f6080820190506128345f830187612715565b6128416020830186612715565b61284e6040830185612458565b61285b6060830184612458565b95945050505050565b5f5f6040838503121561287a576128796123c2565b5b5f61288785828601612496565b925050602061289885828601612496565b9150509250929050565b5f8115159050919050565b6128b6816128a2565b82525050565b6128c58161244f565b82525050565b608082015f8201516128df5f8501826128ad565b5060208201516128f260208501826128ad565b50604082015161290560408501826128bc565b50606082015161291860608501826128bc565b50505050565b5f6080820190506129315f8301846128cb565b92915050565b612940816128a2565b811461294a575f5ffd5b50565b5f8135905061295b81612937565b92915050565b5f5f5f5f60808587031215612979576129786123c2565b5b5f61298687828801612410565b94505060206129978782880161294d565b93505060406129a887828801612496565b925050606085013567ffffffffffffffff8111156129c9576129c86123c6565b5b6129d58782880161262a565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612a13816123e9565b82525050565b606082015f820151612a2d5f8501826128bc565b506020820151612a4060208501826128bc565b506040820151612a536040850182612a0a565b50505050565b5f612a648383612a19565b60608301905092915050565b5f602082019050919050565b5f612a86826129e1565b612a9081856129eb565b9350612a9b836129fb565b805f5b83811015612acb578151612ab28882612a59565b9750612abd83612a70565b925050600181019050612a9e565b5085935050505092915050565b5f6020820190508181035f830152612af08184612a7c565b905092915050565b5f67ffffffffffffffff821115612b1257612b11612533565b5b602082029050602081019050919050565b5f5ffd5b5f612b39612b3484612af8565b612591565b90508083825260208201905060208402830185811115612b5c57612b5b612b23565b5b835b81811015612b855780612b718882612410565b845260208401935050602081019050612b5e565b5050509392505050565b5f82601f830112612ba357612ba261251b565b5b8135612bb3848260208601612b27565b91505092915050565b5f5f5f60608486031215612bd357612bd26123c2565b5b5f612be086828701612410565b935050602084013567ffffffffffffffff811115612c0157612c006123c6565b5b612c0d86828701612b8f565b9250506040612c1e86828701612410565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c5f8261244f565b9150612c6a8361244f565b9250828201905080821115612c8257612c81612c28565b5b92915050565b5f608082019050612c9b5f830187612458565b612ca86020830186612458565b612cb56040830185612458565b612cc26060830184612458565b95945050505050565b5f82825260208201905092915050565b7f736574416476616e636564414d4c53636f7265000000000000000000000000005f82015250565b5f612d0f601383612ccb565b9150612d1a82612cdb565b602082019050919050565b5f60c082019050612d385f830188612715565b8181036020830152612d4981612d03565b9050612d586040830187612715565b612d656060830186612458565b612d726080830185612458565b612d7f60a0830184612458565b9695505050505050565b5f604082019050612d9c5f830185612458565b612da96020830184612458565b9392505050565b7f736574416476616e6365644b79630000000000000000000000000000000000005f82015250565b5f612de4600e83612ccb565b9150612def82612db0565b602082019050919050565b612e03816128a2565b82525050565b5f60c082019050612e1c5f830188612715565b8181036020830152612e2d81612dd8565b9050612e3c6040830187612715565b612e496060830186612dfa565b612e566080830185612458565b612e6360a0830184612458565b9695505050505050565b5f602082019050612e805f830184612dfa565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f612ef2612eed612ee884612eb3565b612ecf565b612ebc565b9050919050565b612f0281612ed8565b82525050565b5f602082019050612f1b5f830184612ef9565b92915050565b7f736574426173654b7963000000000000000000000000000000000000000000005f82015250565b5f612f55600a83612ccb565b9150612f6082612f21565b602082019050919050565b5f60c082019050612f7e5f830188612715565b8181036020830152612f8f81612f49565b9050612f9e6040830187612715565b612fab6060830186612dfa565b612fb86080830185612458565b612fc560a0830184612458565b9695505050505050565b7f73657442617365414d4c53636f726500000000000000000000000000000000005f82015250565b5f613003600f83612ccb565b915061300e82612fcf565b602082019050919050565b5f60c08201905061302c5f830188612715565b818103602083015261303d81612ff7565b905061304c6040830187612715565b6130596060830186612458565b6130666080830185612458565b61307360a0830184612458565b9695505050505050565b5f6130878261244f565b91506130928361244f565b92508282039050818111156130aa576130a9612c28565b5b92915050565b5f6130ba8261244f565b91505f82036130cc576130cb612c28565b5b600182039050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61310d816124e8565b82525050565b5f6020820190506131265f830184613104565b92915050565b5f60ff82169050919050565b6131418161312c565b82525050565b5f60808201905061315a5f830187613104565b6131676020830186613138565b6131746040830185613104565b6131816060830184613104565b9594505050505056fea26469706673582212209e47c0436d124854384d492867a3f1d1d1ee9abf1f6a26c22d40dede1e95096064736f6c634300081c0033