[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "deal", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousPrincipalInvested", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "previousPrincipalRepaid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "previousReturnPaid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "updatedPrincipalvested", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "updatedPrincipalRepaid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "updatedCumulativeReturns", "type": "uint256" } ], "name": "DealStatsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "previousPrincipalInvested", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "previousPrincipalRepaid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "previousReturnPaid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "updatedPrincipalvested", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "updatedPrincipalRepaid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "updatedCumulativeReturns", "type": "uint256" } ], "name": "ProtocolStatsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "deal", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenBurned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "deal", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "deal", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TokenPrincipalUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "deal", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "principalRepaid", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "returnPaid", "type": "uint256" } ], "name": "TokenRepaymentBooked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OWNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "allowToTransfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "principalRepaid", "type": "uint256" }, { "internalType": "uint256", "name": "returnPaid", "type": "uint256" } ], "name": "bookRepayment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "dealAddress", "type": "address" }, { "internalType": "address", "name": "investor", "type": "address" } ], "name": "calculateTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "config", "outputs": [ { "internalType": "contract IHelixConfig", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "dealAddress", "type": "address" } ], "name": "dealTVL", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "deals", "outputs": [ { "internalType": "uint256", "name": "principalInvested", "type": "uint256" }, { "internalType": "uint256", "name": "principalRepaid", "type": "uint256" }, { "internalType": "uint256", "name": "cumulativeReturns", "type": "uint256" }, { "internalType": "bool", "name": "created", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "deal", "type": "address" } ], "name": "getDealStats", "outputs": [ { "components": [ { "internalType": "uint256", "name": "principalInvested", "type": "uint256" }, { "internalType": "uint256", "name": "principalRepaid", "type": "uint256" }, { "internalType": "uint256", "name": "cumulativeReturns", "type": "uint256" }, { "internalType": "bool", "name": "created", "type": "bool" } ], "internalType": "struct IHelixDealStats.DealStats", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getProtocolStats", "outputs": [ { "components": [ { "internalType": "uint256", "name": "principalInvested", "type": "uint256" }, { "internalType": "uint256", "name": "principalRepaid", "type": "uint256" }, { "internalType": "uint256", "name": "cumulativeReturns", "type": "uint256" } ], "internalType": "struct IHelixDealTokens.ProtocolStats", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTokenInfo", "outputs": [ { "components": [ { "internalType": "address", "name": "deal", "type": "address" }, { "internalType": "uint256", "name": "principalInvested", "type": "uint256" }, { "internalType": "uint256", "name": "principalRepaid", "type": "uint256" }, { "internalType": "uint256", "name": "cumulativeReturns", "type": "uint256" } ], "internalType": "struct IHelixDealTokens.TokenInfo", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "halt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "contract IHelixConfig", "name": "_config", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isAdmin", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "isApprovedOrOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "isValidDeal", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "principalAmount", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newDeal", "type": "address" } ], "name": "onDealCreated", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "protocolStats", "outputs": [ { "internalType": "uint256", "name": "principalInvested", "type": "uint256" }, { "internalType": "uint256", "name": "principalRepaid", "type": "uint256" }, { "internalType": "uint256", "name": "cumulativeReturns", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "id", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "toggleAllowToTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokens", "outputs": [ { "internalType": "address", "name": "deal", "type": "address" }, { "internalType": "uint256", "name": "principalInvested", "type": "uint256" }, { "internalType": "uint256", "name": "principalRepaid", "type": "uint256" }, { "internalType": "uint256", "name": "cumulativeReturns", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "principalInvested", "type": "uint256" }, { "internalType": "uint256", "name": "principalRepaid", "type": "uint256" }, { "internalType": "uint256", "name": "returnPaid", "type": "uint256" } ], "name": "updateDealStats", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "principalInvested", "type": "uint256" }, { "internalType": "uint256", "name": "principalRepaid", "type": "uint256" }, { "internalType": "uint256", "name": "returnPaid", "type": "uint256" } ], "name": "updateProtocolStats", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61391e80620000f46000396000f3fe608060405234801561001057600080fd5b50600436106102c15760003560e01c80635cba57131161017d578063a22cb465116100d9578063d539139311610092578063d539139314610736578063d547741f1461075d578063e58378bb14610770578063e63ab1e914610785578063e80432391461079a578063e985e9c5146107ad578063f2ce5997146107c057600080fd5b8063a22cb465146106cf578063b6db75a0146106e2578063b88d4fde146106ea578063bbdfd3e6146106fd578063bcc4d89114610710578063c87b56dd1461072357600080fd5b80638456cb59116101365780638456cb591461063a5780638651ebfb146106425780638c7a63ae1461064a57806391d148541461069957806394bf804d146106ac57806395d89b41146106bf578063a217fddf146106c757600080fd5b80635cba57131461059e5780635ed7ca5b146105ce5780636352211e146105d657806370a08231146105e9578063771aceef146105fc57806379502c551461062657600080fd5b80633e65de431161022c578063430c2081116101e5578063430c2081146104ca578063485cc955146104dd5780634e140c1f146104f05780634f64b2be146105035780634f6ccce71461056d57806355f804b3146105805780635c975abb1461059357600080fd5b80633e65de43146104335780633f17cb121461047b5780633f4ba83a1461048957806342842e0e1461049157806342966c68146104a457806342ec7f8b146104b757600080fd5b806323b872dd1161027e57806323b872dd14610369578063248a9ca31461037c5780632f2ff15d1461039f5780632f745c59146103b25780633227a3d4146103c557806336568abe1461042057600080fd5b806301ffc9a7146102c657806306fdde03146102ee578063081812fc14610303578063095ea7b31461032e5780630cfcfe9f1461034357806318160ddd14610356575b600080fd5b6102d96102d436600461327f565b6107d3565b60405190151581526020015b60405180910390f35b6102f6610840565b6040516102e591906134e9565b610316610311366004613243565b6108d2565b6040516001600160a01b0390911681526020016102e5565b61034161033c366004613218565b6108f9565b005b6102d961035136600461304c565b610a14565b61012f545b6040519081526020016102e5565b6103416103773660046130bc565b610a1f565b61035b61038a366004613243565b60009081526065602052604090206001015490565b6103416103ad36600461325b565b610a50565b61035b6103c0366004613218565b610a75565b6103fe6103d336600461304c565b6101926020526000908152604090208054600182015460028301546003909301549192909160ff1684565b60408051948552602085019390935291830152151560608201526080016102e5565b61034161042e36600461325b565b610b0c565b61044661044136600461304c565b610b8a565b6040516102e5919081518152602080830151908201526040808301519082015260609182015115159181019190915260800190565b610198546102d99060ff1681565b610341610c0b565b61034161049f3660046130bc565b610ca1565b6103416104b2366004613243565b610cbc565b6103416104c5366004613324565b610df0565b6102d96104d8366004613218565b610f39565b6103416104eb366004613206565b610f4c565b61035b6104fe36600461304c565b6111dd565b610543610511366004613243565b6101916020526000908152604090208054600182015460028301546003909301546001600160a01b0390921692909184565b604080516001600160a01b03909516855260208501939093529183015260608201526080016102e5565b61035b61057b366004613243565b611207565b61034161058e3660046132b7565b6112aa565b60c95460ff166102d9565b6101945461019554610196546105b392919083565b604080519384526020840192909252908201526060016102e5565b6103416112f0565b6103166105e4366004613243565b611325565b61035b6105f736600461304c565b61135a565b6106046113e0565b60408051825181526020808401519082015291810151908201526060016102e5565b61019054610316906001600160a01b031681565b61034161142c565b6103416114be565b61065d610658366004613243565b611508565b6040516102e5919081516001600160a01b0316815260208083015190820152604080830151908201526060918201519181019190915260800190565b6102d96106a736600461325b565b611519565b61035b6106ba36600461325b565b611544565b6102f6611587565b61035b600081565b6103416106dd3660046131d5565b611596565b6102d96115a1565b6103416106f83660046130fc565b6115c0565b61034161070b366004613324565b6115f8565b61034161071e366004613324565b611741565b6102f6610731366004613243565b611843565b61035b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61034161076b36600461325b565b6119b8565b61035b60008051602061388983398151915281565b61035b6000805160206138a983398151915281565b61035b6107a8366004613084565b6119dd565b6102d96107bb366004613084565b611a32565b6103416107ce36600461304c565b611a60565b60006001600160e01b031982166380ac58cd60e01b148061080457506001600160e01b03198216635b5e139f60e01b145b8061081f57506001600160e01b0319821663780e9d6360e01b145b8061083a57506001600160e01b031982166301ffc9a760e01b145b92915050565b60606097805461084f906137b1565b80601f016020809104026020016040519081016040528092919081815260200182805461087b906137b1565b80156108c85780601f1061089d576101008083540402835291602001916108c8565b820191906000526020600020905b8154815290600101906020018083116108ab57829003601f168201915b5050505050905090565b60006108dd82611afe565b506000908152609b60205260409020546001600160a01b031690565b600061090482611325565b9050806001600160a01b0316836001600160a01b031614156109775760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061099357506109938133611a32565b610a055760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161096e565b610a0f8383611b23565b505050565b600061083a82611b91565b610a293382611bb3565b610a455760405162461bcd60e51b815260040161096e906134fc565b610a0f838383611c11565b600082815260656020526040902060010154610a6b81611d70565b610a0f8383611d7a565b6000610a808361135a565b8210610ae25760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161096e565b506001600160a01b0391909116600090815261012d60209081526040808320938352929052205490565b6001600160a01b0381163314610b7c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161096e565b610b868282611e00565b5050565b610bb760405180608001604052806000815260200160008152602001600081526020016000151581525090565b506001600160a01b03166000908152610192602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff161515606082015290565b610c236000805160206138a983398151915233611519565b610c97576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e7061757365606482015260840161096e565b610c9f611e67565b565b610a0f838383604051806020016040528060008152506115c0565b610cc4611eb9565b6000610ccf82611eff565b90506000610cdd3384611bb3565b90506000610cea33611b91565b8015610cff575082516001600160a01b031633145b90506000610d0c85611325565b90508280610d175750815b610d795760405162461bcd60e51b815260206004820152602d60248201527f4552433732314275726e61626c653a2063616c6c65722063616e6e6f7420627560448201526c3937103a3434b9903a37b5b2b760991b606482015260840161096e565b8360200151846040015114610dda5760405162461bcd60e51b815260206004820152602160248201527f43616e206f6e6c79206275726e2066756c6c792072657061696420746f6b656e6044820152607360f81b606482015260840161096e565b610de981856000015187611f56565b5050505050565b610df933611b91565b610e155760405162461bcd60e51b815260040161096e906136e5565b610e1d611eb9565b336000818152610192602090815260409182902082516080810184528154808252600183015493820193909352600282015493810193909352600381015460ff16151560608401529190610e719087611fd4565b82556001820154610e829086611fd4565b60018301556002820154610e969085611fd4565b6002830155815460018301541115610ec05760405162461bcd60e51b815260040161096e90613617565b8051602080830151604080850151865460018801546002890154845197885295870194909452918501526060840152608083015260a08201526001600160a01b038416907f5b5af6587c6ce67349bd282260bdb677594c986128c26f793582f0d1a81a59109060c00160405180910390a2505050505050565b6000610f458383611bb3565b9392505050565b600054610100900460ff1615808015610f6c5750600054600160ff909116105b80610f865750303b158015610f86575060005460ff166001145b610fe95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161096e565b6000805460ff19166001179055801561100c576000805461ff0019166101001790555b6001600160a01b0383161580159061102c57506001600160a01b03821615155b61108b5760405162461bcd60e51b815260206004820152602a60248201527f4f776e657220616e6420636f6e666967206164647265737365732063616e6e6f6044820152697420626520656d70747960b01b606482015260840161096e565b611093611fe0565b61109b611fe0565b6110a3611fe0565b6110ee6040518060400160405280600e81526020016d52616e646f6d2074657374696e6760901b8152506040518060400160405280600381526020016214951560ea1b815250612007565b6110f6612055565b6110fe611fe0565b61019080546001600160a01b0319166001600160a01b038416179055610198805460ff1916905561113d6000805160206138a983398151915284612088565b61115560008051602061388983398151915284612088565b61117b6000805160206138a9833981519152600080516020613889833981519152612092565b61119360008051602061388983398151915280612092565b8015610a0f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b03811660009081526101926020526040812060018101548154610f459190613757565b600061121361012f5490565b82106112765760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161096e565b61012f828154811061129857634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6112b26115a1565b6112e35760405162461bcd60e51b8152602060048201526002602482015261105160f21b604482015260640161096e565b610a0f6101978383612ed8565b60008051602061388983398151915261130881611d70565b60c95460ff1661131d5761131a6120dd565b50565b61131a611e67565b6000818152609960205260408120546001600160a01b03168061083a5760405162461bcd60e51b815260040161096e90613668565b60006001600160a01b0382166113c45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161096e565b506001600160a01b03166000908152609a602052604090205490565b61140460405180606001604052806000815260200160008152602001600081525090565b5060408051606081018252610194548152610195546020820152610196549181019190915290565b6114446000805160206138a983398151915233611519565b6114b65760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f2070617573650000606482015260840161096e565b610c9f6120dd565b6114c6611eb9565b6000805160206138898339815191526114de81611d70565b6101985460ff166114f05760016114f3565b60005b610198805460ff191691151591909117905550565b611510612f5c565b61083a82611eff565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061154f33611b91565b61156b5760405162461bcd60e51b815260040161096e906136e5565b611573611eb9565b3361157f84828561211a565b949350505050565b60606098805461084f906137b1565b610b86338383612222565b60006115bb60008051602061388983398151915233611519565b905090565b6115ca3383611bb3565b6115e65760405162461bcd60e51b815260040161096e906134fc565b6115f2848484846122ed565b50505050565b61160133611b91565b61161d5760405162461bcd60e51b815260040161096e906136e5565b611625611eb9565b60008381526101916020526040902080546001600160a01b031633811461168e5760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c792074686520746f6b656e2773206465616c2063616e20726570617900604482015260640161096e565b600282015461169d9085611fd4565b60028301819055600183015410156116c75760405162461bcd60e51b815260040161096e90613617565b60038201546116d69084611fd4565b6003830155846001600160a01b0382166116ef82611325565b6001600160a01b03167f4d5c75fddac23f4029e62f1bdfb68f79ff1cd8c30112d8a9e93313128a2d95198787604051611732929190918252602082015260400190565b60405180910390a45050505050565b61174a33611b91565b6117665760405162461bcd60e51b815260040161096e906136e5565b61176e611eb9565b60006117786113e0565b610194549091506117899085611fd4565b610194556101955461179b9084611fd4565b61019555610196546117ad9083611fd4565b61019655610194546101955411156117d75760405162461bcd60e51b815260040161096e90613617565b8051602080830151604080850151610194546101955461019654845197885295870194909452918501526060840152608083015260a08201527fa01ff610883e30c349b1d6ed6c452230a1d3bcbb752dda6c5d0e80df1ed191549060c00160405180910390a150505050565b606061184e82612320565b6118b25760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161096e565b60008281526101936020526040812080546118cc906137b1565b80601f01602080910402602001604051908101604052809291908181526020018280546118f8906137b1565b80156119455780601f1061191a57610100808354040283529160200191611945565b820191906000526020600020905b81548152906001019060200180831161192857829003601f168201915b50505050509050610197805461195a906137b1565b151590506119685792915050565b80511561199b5761019781604051602001611984929190613397565b604051602081830303815290604052915050919050565b6101976119a78461233d565b604051602001611984929190613397565b6000828152606560205260409020600101546119d381611d70565b610a0f8383611e00565b6040516bffffffffffffffffffffffff19606084811b8216602084015283811b8216603484015230901b166048820152600090605c0160408051601f1981840301815291905280516020909101209392505050565b6001600160a01b039182166000908152609c6020908152604080832093909416825291909152205460ff1690565b61019054611a76906001600160a01b0316612457565b6001600160a01b0316336001600160a01b031614611ad65760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792048656c697820666163746f727920697320616c6c6f776564000000604482015260640161096e565b6001600160a01b0316600090815261019260205260409020600301805460ff19166001179055565b611b0781612320565b61131a5760405162461bcd60e51b815260040161096e90613668565b6000818152609b6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b5882611325565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b03166000908152610192602052604090206003015460ff1690565b600080611bbf83611325565b9050806001600160a01b0316846001600160a01b03161480611be65750611be68185611a32565b8061157f5750836001600160a01b0316611bff846108d2565b6001600160a01b031614949350505050565b826001600160a01b0316611c2482611325565b6001600160a01b031614611c4a5760405162461bcd60e51b815260040161096e9061359b565b6001600160a01b038216611cac5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161096e565b611cb983838360016124d2565b826001600160a01b0316611ccc82611325565b6001600160a01b031614611cf25760405162461bcd60e51b815260040161096e9061359b565b6000818152609b6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652609a8552838620805460001901905590871680865283862080546001019055868652609990945282852080549092168417909155905184936000805160206138c983398151915291a4505050565b61131a8133612550565b611d848282611519565b610b865760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611dbc3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611e0a8282611519565b15610b865760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b611e6f6125a9565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60c95460ff1615610c9f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161096e565b611f07612f5c565b5060009081526101916020908152604091829020825160808101845281546001600160a01b03168152600182015492810192909252600281015492820192909252600390910154606082015290565b60008181526101916020526040812080546001600160a01b0319168155600181018290556002810182905560030155611f8e816125f2565b80826001600160a01b0316846001600160a01b03167fbfa41556980d157c24e8632dbb78958f8759a86b4acdea421f93dc7259fb55db60405160405180910390a4505050565b6000610f45828461370c565b600054610100900460ff16610c9f5760405162461bcd60e51b815260040161096e9061369a565b600054610100900460ff1661202e5760405162461bcd60e51b815260040161096e9061369a565b8151612041906097906020850190612f8d565b508051610a0f906098906020840190612f8d565b600054610100900460ff1661207c5760405162461bcd60e51b815260040161096e9061369a565b60c9805460ff19169055565b610b868282611d7a565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6120e5611eb9565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e9c3390565b600061212683836119dd565b6000818152610191602052604090208054919250906001600160a01b03166121ad5780546001600160a01b0319166001600160a01b03851617815561216b8383612634565b81846001600160a01b0316846001600160a01b03167fdf1b2b09e9800d31c599375056be9f9e4eb37f078102643600c4e149714efaad60405160405180910390a45b848160010160008282546121c1919061370c565b9250508190555081846001600160a01b0316846001600160a01b03167f28cca81bd3cad60f0e2b2458e5f7456c895ea4d14f850125a122b40dda904342846001015460405161221291815260200190565b60405180910390a4509392505050565b816001600160a01b0316836001600160a01b031614156122805760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161096e565b6001600160a01b038381166000818152609c6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6122f8848484611c11565b6123048484848461273d565b6115f25760405162461bcd60e51b815260040161096e90613549565b6000908152609960205260409020546001600160a01b0316151590565b6060816123615750506040805180820190915260018152600360fc1b602082015290565b8160005b811561238b5780612375816137ec565b91506123849050600a83613724565b9150612365565b60008167ffffffffffffffff8111156123b457634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156123de576020820181803683370190505b5090505b841561157f576123f3600183613757565b9150612400600a86613807565b61240b90603061370c565b60f81b81838151811061242e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350612450600a86613724565b94506123e2565b604051635c9fcd8560e11b8152600060048201819052906001600160a01b0383169063b93f9b0a9060240160206040518083038186803b15801561249a57600080fd5b505afa1580156124ae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083a9190613068565b6001600160a01b03841615612544576101985460ff166125445760405162461bcd60e51b815260206004820152602760248201527f48656c6978206465616c20746f6b656e73206973206e6f6e2d7472616e736665604482015266727261626c652160c81b606482015260840161096e565b6115f28484848461284a565b61255a8282611519565b610b865761256781612856565b612572836020612868565b60405160200161258392919061343d565b60408051601f198184030181529082905262461bcd60e51b825261096e916004016134e9565b60c95460ff16610c9f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161096e565b6125fb81612a4a565b6000818152610193602052604090208054612615906137b1565b15905061131a5760008181526101936020526040812061131a91613001565b6001600160a01b03821661268a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161096e565b61269381612320565b156126b05760405162461bcd60e51b815260040161096e906135e0565b6126be6000838360016124d2565b6126c781612320565b156126e45760405162461bcd60e51b815260040161096e906135e0565b6001600160a01b0382166000818152609a6020908152604080832080546001019055848352609990915280822080546001600160a01b0319168417905551839291906000805160206138c9833981519152908290a45050565b60006001600160a01b0384163b1561283f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906127819033908990889088906004016134ac565b602060405180830381600087803b15801561279b57600080fd5b505af19250505080156127cb575060408051601f3d908101601f191682019092526127c89181019061329b565b60015b612825573d8080156127f9576040519150601f19603f3d011682016040523d82523d6000602084013e6127fe565b606091505b50805161281d5760405162461bcd60e51b815260040161096e90613549565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061157f565b506001949350505050565b6115f284848484612adb565b606061083a6001600160a01b03831660145b60606000612877836002613738565b61288290600261370c565b67ffffffffffffffff8111156128a857634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156128d2576020820181803683370190505b509050600360fc1b816000815181106128fb57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061293857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061295c846002613738565b61296790600161370c565b90505b60018111156129fb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106129a957634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106129cd57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936129f48161379a565b905061296a565b508315610f455760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161096e565b6000612a5582611325565b9050612a658160008460016124d2565b612a6e82611325565b6000838152609b6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552609a845282852080546000190190558785526099909352818420805490911690555192935084926000805160206138c9833981519152908390a45050565b612ae784848484612c16565b6001811115612b565760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b606482015260840161096e565b816001600160a01b038516612bb457612baf8161012f8054600083815261013060205260408120829055600182018355919091527f232da9e50dad2971456a78fb5cd6ff6b75019984d6e918139ce990999420f9790155565b612bd7565b836001600160a01b0316856001600160a01b031614612bd757612bd78582612c89565b6001600160a01b038416612bf357612bee81612d2b565b610de9565b846001600160a01b0316846001600160a01b031614610de957610de98482612e0a565b612c2284848484612e50565b60c95460ff16156115f25760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b606482015260840161096e565b60006001612c968461135a565b612ca09190613757565b600083815261012e6020526040902054909150808214612cf6576001600160a01b038416600090815261012d60209081526040808320858452825280832054848452818420819055835261012e90915290208190555b50600091825261012e602090815260408084208490556001600160a01b03909416835261012d81528383209183525290812055565b61012f54600090612d3e90600190613757565b6000838152610130602052604081205461012f8054939450909284908110612d7657634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508061012f8381548110612da657634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152610130909152604080822084905585825281205561012f805480612dee57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000612e158361135a565b6001600160a01b03909316600090815261012d60209081526040808320868452825280832085905593825261012e9052919091209190915550565b60018111156115f2576001600160a01b03841615612e96576001600160a01b0384166000908152609a602052604081208054839290612e90908490613757565b90915550505b6001600160a01b038316156115f2576001600160a01b0383166000908152609a602052604081208054839290612ecd90849061370c565b909155505050505050565b828054612ee4906137b1565b90600052602060002090601f016020900481019282612f065760008555612f4c565b82601f10612f1f5782800160ff19823516178555612f4c565b82800160010185558215612f4c579182015b82811115612f4c578235825591602001919060010190612f31565b50612f58929150613037565b5090565b604051806080016040528060006001600160a01b031681526020016000815260200160008152602001600081525090565b828054612f99906137b1565b90600052602060002090601f016020900481019282612fbb5760008555612f4c565b82601f10612fd457805160ff1916838001178555612f4c565b82800160010185558215612f4c579182015b82811115612f4c578251825591602001919060010190612fe6565b50805461300d906137b1565b6000825580601f1061301d575050565b601f01602090049060005260206000209081019061131a91905b5b80821115612f585760008155600101613038565b60006020828403121561305d578081fd5b8135610f458161385d565b600060208284031215613079578081fd5b8151610f458161385d565b60008060408385031215613096578081fd5b82356130a18161385d565b915060208301356130b18161385d565b809150509250929050565b6000806000606084860312156130d0578081fd5b83356130db8161385d565b925060208401356130eb8161385d565b929592945050506040919091013590565b60008060008060808587031215613111578081fd5b843561311c8161385d565b9350602085013561312c8161385d565b925060408501359150606085013567ffffffffffffffff8082111561314f578283fd5b818701915087601f830112613162578283fd5b81358181111561317457613174613847565b604051601f8201601f19908116603f0116810190838211818310171561319c5761319c613847565b816040528281528a60208487010111156131b4578586fd5b82602086016020830137918201602001949094529598949750929550505050565b600080604083850312156131e7578182fd5b82356131f28161385d565b9150602083013580151581146130b1578182fd5b60008060408385031215613096578182fd5b6000806040838503121561322a578182fd5b82356132358161385d565b946020939093013593505050565b600060208284031215613254578081fd5b5035919050565b6000806040838503121561326d578182fd5b8235915060208301356130b18161385d565b600060208284031215613290578081fd5b8135610f4581613872565b6000602082840312156132ac578081fd5b8151610f4581613872565b600080602083850312156132c9578182fd5b823567ffffffffffffffff808211156132e0578384fd5b818501915085601f8301126132f3578384fd5b813581811115613301578485fd5b866020828501011115613312578485fd5b60209290920196919550909350505050565b600080600060608486031215613338578081fd5b505081359360208301359350604090920135919050565b6000815180845261336781602086016020860161376e565b601f01601f19169290920160200192915050565b6000815161338d81856020860161376e565b9290920192915050565b600080845482600182811c9150808316806133b357607f831692505b60208084108214156133d357634e487b7160e01b87526022600452602487fd5b8180156133e757600181146133f857613424565b60ff19861689528489019650613424565b60008b815260209020885b8681101561341c5781548b820152908501908301613403565b505084890196505b505050505050613434818561337b565b95945050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161346f81601785016020880161376e565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134a081602884016020880161376e565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906134df9083018461334f565b9695505050505050565b602081526000610f45602083018461334f565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526031908201527f5072696e636970616c207265706169642063616e6e6f742065786365656420506040820152701c9a5b98da5c185b081a5b9d995cdd1959607a1b606082015260800190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6020808252600d908201526c496e76616c6964206465616c2160981b604082015260600190565b6000821982111561371f5761371f61381b565b500190565b60008261373357613733613831565b500490565b60008160001904831182151516156137525761375261381b565b500290565b6000828210156137695761376961381b565b500390565b60005b83811015613789578181015183820152602001613771565b838111156115f25750506000910152565b6000816137a9576137a961381b565b506000190190565b600181811c908216806137c557607f821691505b602082108114156137e657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156138005761380061381b565b5060010190565b60008261381657613816613831565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461131a57600080fd5b6001600160e01b03198116811461131a57600080fdfeb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cee6a59ba1995d7748feabe84b260ddab3283ffcb480ce4b6c08ea3b1c4e763f64736f6c63430008040033